1.将第三方的jar文件打包到最终形成的应用的jar文件中
使用的场景为:第三方jar文件比较小,可能会进行改动的情况下
2.使用参数 –jars给定驱动
使用场景为:jar文件比较小,依赖于改jar文件的应用比较少
操作命令为:
bin/spark-shell --jars /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar,/opt/cdh-5.3.6/hive/lib/derby-10.10.1.1.jar
用户提交应用的时候使用--jars参数给定,回在driver运行的jvm中启动一个socket进程,提供jar文件的一个下载功能,所以这种方式不要求所有机器上均有第三方的jar文件,只要求jar文件位于使用spark-submit提交应用的机器上有这个jar文件即可
3.使用SPARK_CLASSPATH来设置第三方依赖包
使用场景:jar文件在spark应用中比较多
操作:在spark目录下创建一个external_jars文件夹,然后将jar复制到这个文件夹中,然后配置SPARK_CLASSPATH
cd /opt/cdh-5.3.6/spark
mkdir external_jars
cp /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar external_jars/
cp /opt/cdh-5.3.6/hive/lib/derby-10.10.1.1.jar external_jars/
vim conf/spark-env.sh
添加内容如下:
SPARK_CLASSPATH=/opt/cdh-5.3.6/spark/external_jars/*
要求spark应用运行的所有机器上均存在你添加的这些jar文件
4.hadoop依赖第三方jar文件解决方式
hadoop依赖jar解决方案和spark解决方案基本类似,
第一种和spark完全一样
第二种将jars改为libjars
第三种修改HADOOP_CLASSPATH