Spark应用程序第三方jar文件依赖解决方案
2024-10-21 12:00:46
第一种方式
操作:将第三方jar文件打包到最终形成的spark应用程序jar文件中
应用场景:第三方jar文件比较小,应用的地方比较少
第二种方式
操作:使用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
## 配置参数:--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_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)
最新文章
- MVC系列2-Model
- Unity中游戏的声音管理
- Java经典实例:正则表达式,替换匹配的文本
- 翻译qmake文档(二) Getting Started
- EF DbModelBuilder
- Intent和Activity知识点总结
- SqlServer判断表是否存在
- Struts2 ValueStack
- [转]Geoserver实现WFS操作
- [笔记]A Practical Guide to Support Vector Classication
- MathJax使用指南
- 重磅发布:《阿里巴巴Android开发手册(规约)》
- 几种常用hash算法及原理
- springboot整合shiro后报java.lang.ClassCastExcepting异常
- springcloud~配置中心实例搭建
- JS 获取某个容器控件中id包含制定字符串的控件id列表
- 【Java基础】【18Map集合&;模拟斗D主X排和F排】
- 老男孩python学习自修第十七天【装饰器】
- HDU3584 Cube
- MongoDB简介及基础知识
热门文章
- 用溪流 WarKey 辅助红警开局快捷操作
- 【学习笔记】珂朵莉树(ODT)
- java入门与进阶P-6.1+P-6.2
- 【学习笔记】QT从入门到实战完整版(菜单栏、工具栏、浮动窗口、状态栏、中心部件)(3)
- vue学习笔记(一) ----- vue指令(菜单列表案例)
- layedit 清空 编辑器
- git操作出现 error: The following untracked working tree files would be overwritten by ...
- 2021级《JAVA语言程序设计》上机考试试题6
- 多线程并发(二):聊聊AQS中的共享锁实现原理
- echart折线图异常多出一条连接线