spark idea maven开发环境的安装网上有很多教程,笔者在此就不过多阐述了,可以参考spark idea maven开发环境配置。
结合网友整理的资料,简单总结一下搭建这套开发环境的主要步骤,以及项目中用到的一些不一样的地方:
1.下载,安装idea,spark,scala,maven等;
2.在idea中安装scala插件;
3.新建一个maven工程,在project structure里面设置jdk(project选项里面)和scala sdk(global libraries里面),另外,右击工程名称添加scala框架支持(可以创建scala类等);
4.由于项目需求,需要在spark中部署实时处理和离线处理两个工程,故在工程下再创建两个maven module,命名为streaming和offline,一个用于实时计算,一个用于离线计算,在生产环境中,使用maven单独打两个包提交到spark执行任务;
5.随便挑选一个module,如offline,在src/main/下创建scala目录,并make directory as sources root。在pom文件中引入spark-core相关的依赖,然后新建一个scala的Main Object类 ,编写hello world demo,本地直接运行,成功。
object Main {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("mySpark")
//setMaster("local") 本机的spark就用local,远端的就写ip
//如果是打成jar包运行则需要去掉 setMaster("local")因为在参数中会指定。
// 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")
}
}
6.将offline模块单独使用maven打包jar。在新建的工程pom文件中,还需要额外引入maven和scala的打包相关插件,
<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
在offline模块下,mvn clean package,打包,上传到spark集群,执行spark-submit命令,如下
spark-submit --class com.xysy.boss.Main --master spark://master:7077 /opt/offline-1.0-SNAPSHOT.jar
运行成功。至此,基本开发环境搭建完毕。
注意:将工程或module打成jar包时,spark相关依赖jar包不需要包含在内,因为spark集群本身已经提供了jar包,打进去文件会变得很大,故在spark相关依赖中加入<scope>provided</scope>