Spark 第三方jar包依赖解决方案

Spark 第三方jar包依赖解决方案_第1张图片
在进行Spark开发和学习中,有时会遇到缺包或找不到类的情况,或是需要自定义扩展一些功能,那么我们就要了解第三方jar包依赖解决方案,今天抽空总结一下各种解决方案和适用场景。

一. 将第三方的jar文件打包到应用jar文件中
使用场景:第三方jar文件比较小,依赖的spark应用比较少
二. 使用参数–jars给定依赖jar文件
要求jar文件在driver运行的机器上存在
使用场景:依赖的spark应用比较少
例如,Spark集成Hive,需要MySQL连接驱动包:
命令: SPARKHOME/bin/sparksqljars/opt/cdh5.3.6/hive/lib/mysqlconnectorjava5.1.27bin.jar.使packagesjarjarspackagesmavenjar {SPARK_HOME} bin/spark-sql –packages mysql:mysql-connector-java:5.1.27
内部原理:
下载给定的文件到本地的/home/${user.name}/.ivy2/jars中,
然后内部使用–jars进行上传操作
四. 设置SPARK_CLASSPATH参数给定依赖包
Note: 如果程序运行在集群上,要求所有执行的节点都需要进行该配置
使用场景:这种方式是我们最常采用的方式
配置Spark-env.sh文件,添加以下一行:
SPARK_CLASSPATH=/opt/cdh-5.3.6/spark/external_jars/*
将所需要依赖的jar文件copy到对应的文件夹中即可(所有执行节点均需要操作)
cp /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar
/opt/cdh-5.3.6/spark/external_jars

当然,以上是通用的jar包依赖解决方案,在平常的工作中,还要结合公司的集群配置具体情况,不同的运行环境也有相应的方案

在运行环境为spark on yarn,同时driver运行模式为cluster的情况下,第三方jar文件依赖解决方案只有一种:
${HADOOP_HOME}/share/hadoop/common/lib

你可能感兴趣的:(大数据架构)