一、实现功能
spark运行依赖jar包添加方式。
二、方法
1. 本地jar包:
(1)方法:使用参数--jars添加本地的第三方jar文件,可以给定多个,使用逗号分隔
bin/spark-shell --jars /opt/modules/hive-1.2.1/lib/mysql-connector-java-5.1.27-bin.jar,/opt/modules/hive-1.2.1/lib/derby-10.10.2.0.jar
(2)适用情况:
要求jar文件在driver和client的机器上存在,适合依赖比较少的情况
(3) 查看:可以在4040页面查看环境,拉到最低端,看到user add jars,可以复制链接下载
在http://bigdata.hadoop.com:4041/environment/页面,最下面看到 :
结果:
spark://192.168.31.3:50950/jars/derby-10.10.2.0.jar Added By User
spark://192.168.31.3:50950/jars/mysql-connector-java-5.1.27-bin.jar Added By User
2. maven源,从maven源下载jar包
(1)方法:使用参数--packages添加maven中央库中的第三方jar文件,可以给定多个,使用逗号分隔
这种方式可以通过--repositories的方式添加依赖仓库,不写就是用默认的
bin/spark-shell --packages mysql:mysql-connector-java:5.1.27
(2)注意:
下载的jar文件会保存到当前用户的根目录下的.ivy2文件夹的jars文件夹中,eg:/home/hadoop/.ivy2/jars;适合依赖比较少的情况
例如下载位置:/root/.ivy2/jars/mysql_mysql-connector-java-5.1.27.jar
(3)查看:http://bigdata.hadoop.com:4041/environment/网页最下面
spark://192.168.31.3:52185/jars/mysql_mysql-connector-java-5.1.27.jar Added By User
3. 使用SPARK_CLASSPATH环境变量给定jar文件的位置信息
注意:要求所有可以执行的节点都需要进行该配置,如果是spark on yarn,要求所有机器上有对应文件夹的jar文件
(1)创建文件夹
mkdir -p external_jars
cp /opt/modules/hive-1.2.1/lib/mysql-connector-java-5.1.27-bin.jar ./external_jars/
cp /opt/modules/hive-1.2.1/lib/derby-10.10.2.0.jar ./external_jars/
(2)修改配置文件conf/spark-env.sh
vim conf/spark-env.sh
SPARK_CLASSPATH=/opt/modules/spark-2.1.0-bin-2.7.3/external_jars/*
(3)启动
bin/spark-shell
(4)查看结果
http://bigdata.hadoop.com:4041/environment/网页最下面
/opt/modules/spark-2.1.0-bin-2.7.3/external_jars/derby-10.10.2.0.jar System Classpath
/opt/modules/spark-2.1.0-bin-2.7.3/external_jars/mysql-connector-java-5.1.27-bin.jar System Classpath
4.如果是Spark on yarn cluster 第三方jar文件驱动解决方案(推荐):
(1)方法:将第三方的jar文件copy到${HADOOP_HOME}/share/hadoop/common/lib文件夹中或者${HADOOP_HOME}/share/hadoop/yarn/lib文件夹中
注意:使用spark-sql和spark-shell其实底层都是spark-submit,能配置的参数几乎都是一样的
5.将需要的jar包上传到hdfs上,然后配置spark的spark.yarn.jar参数
(1)hdfs上生成目录:/spark/jars
bin/hdfs dfs -mkdir /spark/jars
(2)设置spark的配置参数spark-defaults.conf,添加
spark.yarn.jar hdfs://bigdata-01:8020/spark/jars
(3)上传文件到hdfs://bigdata-01:8020/spark/jars
(4)spark-on-yarn在yarn上跑
bin/spark-shell --master yarn