网上搜的教程要不不完整,要不就是出现各种错误,狠心写下这篇文章!在window上搭建spark开发环境,centos上面搭建spark生产环境。
环境以及版本:
- window 10
- idea 2020.1
- Scala 2.12
- spark 3.2.0
centos上面搭建spark环境这里不做介绍,主要介绍window上面开发环境搭建以及打包spark应用
1 下载Scala
2 IDEA下载Scala插件
3 创建maven项目
4 修改pom.xml
修改Scala里面版本
原来:
修改后:
添加spark依赖
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.0</version></dependency>
- spark以及Scala版本根据自己版本修改,可通过maven仓库配置:https://mvnrepository.com/artifact/org.apache.spark/spark-core
5 删除项目创建的无关文件
使用maven创建的spark项目会有一些无关文件,不删除会报错
删以下文件
6 编写spark测试程序
在src\main\scala\org\example包下面新建一个Scala object,名为sparkTest


import org.apache.spark.{SparkConf, SparkContext}
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("WordCount")
conf.setMaster("local")
val sc = new SparkContext(conf)
val rdd = sc.parallelize(List(1, 2, 3, 4, 5, 6)).map(_ * 3)
val mappedRDD = rdd.filter(_ > 10).collect() //对集合求和
println(rdd.reduce(_ + _)) //输出大于10的元素
for (arg <- mappedRDD)
print(arg + " ")
println()
println("math is work")
}
7 打成jar包
方式一:IDEA打包
使用的是IDEA自带的打包方式


- 注意修改MMETA-INF文件存放目录,不能使用默认路径,否则会报错
点击OK


打包后:
运行:
java -jar sparkDemo.jar(jar包名)
方式二(推荐):使用maven打包
方式一打包过于繁琐,而且打的jar包很大,下面使用maven方式打包
在pom.xml中添加以下内容
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<!--这里改成自己的启动位置(主类位置)-->
<mainClass>org.example.sparkTest</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
maven可能报错:找不到maven-assembly-plugin,可以先加载依赖:
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin -->
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
</dependency>
然后在添加插件
注意:<mainClass>......</mainClass>中改成主类位置,那么怎样查看主类路径?看下面:
当当前类运行后:

打包:
打包成功后:
我们就可以获得两个jar包,一个瘦包,一个胖包
胖包:包含依赖(很大,加载较慢,安全)
瘦包:不包含依赖(较小,加载快,但有可能会出错),使用胖包
window上运行胖jar包
java -jar HudiTest-1.0-SNAPSHOT-jar-with-dependencies.jar
8 将打包好的jar包上传到centos上

进入spark master节点上,进入spark安装目录,然后使用命令:
./bin/spark-submit \
--class org.example.wordCount \
--master spark://node1:7077 \
/root/svolt/data/test/HudiTest-1.0-SNAPSHOT-jar-with-dependencies.jar
- 其中org.example.wordCount是主类,查看位置同上








