spark-submit 應用程式第三方jar檔案
阿新 • • 發佈:2019-01-10
第一種方式:打包到jar應用程式
操作:將第三方jar檔案打包到最終形成的spark應用程式jar檔案中
應用場景:第三方jar檔案比較小,應用的地方比較少
第二種方式:spark-submit 引數 --jars
操作:使用spark-submit提交命令的引數: --jars
要求:
1、使用spark-submit命令的機器上存在對應的jar檔案
2、至於叢集中其他機器上的服務需要該jar檔案的時候,通過driver提供的一個http介面來獲取該jar檔案的(例如:http://192.168.187.146:50206/jars/mysql-connector-java-5.1.27-bin.jar Added By User)
## 配置引數:--jars JARS 如下示例: $ bin/spark-shell --jars /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar
應用場景:要求本地必須要有對應的jar檔案
第三種方式:spark-submit 引數 --packages
操作:使用spark-submit提交命令的引數: --packages
## 配置引數:--packages jar包的maven地址 如下示例: $ bin/spark-shell --packages mysql:mysql-connector-java:5.1.27 --repositories http://maven.aliyun.com/nexus/content/groups/public/ ## --repositories 為mysql-connector-java包的maven地址,若不給定,則會使用該機器安裝的maven預設源中下載 ## 若依賴多個包,則重複上述jar包寫法,中間以逗號分隔 ## 預設下載的包位於當前使用者根目錄下的.ivy/jars資料夾中
應用場景:本地可以沒有,叢集中服務需要該包的的時候,都是從給定的maven地址,直接下載
第四種方式:新增到spark的環境變數
操作:更改Spark的配置資訊:SPARK_CLASSPATH, 將第三方的jar檔案新增到SPARK_CLASSPATH環境變數中
注意事項:要求Spark應用執行的所有機器上必須存在被新增的第三方jar檔案
A.建立一個儲存第三方jar檔案的資料夾: 命令:$ mkdir external_jars B.修改Spark配置資訊 命令:$ vim conf/spark-env.sh 修改內容:SPARK_CLASSPATH=$SPARK_CLASSPATH:/opt/cdh-5.3.6/spark/external_jars/* C.將依賴的jar檔案copy到新建的資料夾中 命令:$ cp /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar ./external_jars/
應用場景:依賴的jar包特別多,寫命令方式比較繁瑣,被依賴包應用的場景也多的情況下
備註:(只針對spark on yarn(cluster)模式)
spark on yarn(cluster),如果應用依賴第三方jar檔案
最終解決方案:將第三方的jar檔案copy到${HADOOP_HOME}/share/hadoop/common/lib資料夾中(Hadoop叢集中所有機器均要求copy)