spark应用程序引用别的jar包

第一种方式

操做:将第三方jar文件打包到最终造成的spark应用程序jar文件中java

应用场景:第三方jar文件比较小,应用的地方比较少mysql

第二种方式

操做:使用spark-submit提交命令的参数: --jarssql

要求:shell

一、使用spark-submit命令的机器上存在对应的jar文件vim

二、至于集群中其余机器上的服务须要该jar文件的时候,经过driver提供的一个http接口来获取该jar文件的(例如:http://192.168.187.146:50206/jars/mysql-connector-java-5.1.27-bin.jar Added By User)bash

1
2
3
## 配置参数:--jars JARS
以下示例:
$ bin /spark-shell  --jars  /opt/cdh-5 .3.6 /hive/lib/mysql-connector-java-5 .1.27-bin.jar

应用场景:要求本地必需要有对应的jar文件maven

第三种方式

操做:使用spark-submit提交命令的参数: --packagesoop

复制代码

## 配置参数:--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地址,直接下载spa

第四种方式

操做:更改Spark的配置信息:SPARK_CLASSPATH, 将第三方的jar文件添加到SPARK_CLASSPATH环境变量中code

注意事项:要求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-default.conf下面,配置

spark.executor.extraClassPath=/data/*
spark.driver.extraClassPath=/data/*

备注:(只针对spark on yarn(cluster)模式)

spark on yarn(cluster),若是应用依赖第三方jar文件

最终解决方案:将第三方的jar文件copy到${HADOOP_HOME}/share/hadoop/common/lib文件夹中(Hadoop集群中全部机器均要求copy)

相关文章
相关标签/搜索