Spark 程序打包在集群运行
环境准备
1、pom 文件引入相关依赖&插件
<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.0.0</version> </dependency> </dependencies> <build> <finalName>WordCount</finalName> <plugins> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.4.6</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
2、代码准备
编写一个简单的词频统计
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /** * 词频统计 */ object WordCount { def main(args : Array[String]) : Unit = { //创建 配置对象 val conf : SparkConf = new SparkConf().setAppName( "wordcount" ).setMaster( "yarn" ) //配置上下文对象 var sc : SparkContext = new SparkContext(conf) sc.textFile(args( 0 )) .flatMap( _ .split( " " )) .map(( _ , 1 )) .reduceByKey( _ + _ ) .saveAsTextFile(args( 1 )) //关闭 sc.stop() } } |
3、打包成 jar
4、集群运行
将jar文件cp到主机上
[hui@hadoop103 spark-yarn]$ pwd /opt/module/spark-yarn [hui@hadoop103 spark-yarn]$ ll *.jar -rw-r--r-- 1 hui wd 4988 5月 21 2022 WordCount.jar
运行程序
bin/spark-submit \ --class org.wdh01.spark01.WordCount \ --master yarn \ WordCount.jar \ /input \ /output
参数说明
--class org.wdh01.spark01.WordCount 主类名 --master yarn yarn 模式:client 模式 WordCount.jar 运行的jar 文件 /input 输入目录 /output 输出目录:注意提交前确认输出路径是否存在,若存在,需要删除
注意:如果运行发生压缩类没找到
spark on yarn会默认使用集群的编码方式,但是相关的jar包不会自动的添加,需要自己配置
方法1
拷贝lzo的包到spark的jars目录
cp /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar /opt/module/spark-yarn/jars
方法2
在执行命令的时候指定lzo的包位置 --driver-class-path /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar
总结
其实只程序测试通过了,打包在集群上运行其实很简单,只是可能会出现由于集群环境某些细微问题导致异常,这样就直接看下运行日志,根据日志提示解决解决就好。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
2021-05-27 解决:superset db upgrade时报错: ModuleNotFoundError: No module named 'dataclasses'
2021-05-27 Centos7 Conda HTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaco