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

总结 

 其实只程序测试通过了,打包在集群上运行其实很简单,只是可能会出现由于集群环境某些细微问题导致异常,这样就直接看下运行日志,根据日志提示解决解决就好。

posted @   晓枫的春天  阅读(156)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需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
点击右上角即可分享
微信分享提示