清明假期折腾了两天,总结了两种方式使用IDE进行spark程序,记录一下:
第一种方法比较简单,两种方式都是采用SBT进行编译的。
注意:本地不需要安装Scala程序,否则在编译程序时有版本兼容性问题。
一、基于Non-SBT方式
创建一个Scala IDEA工程
我们使用Non-SBT的方式,点击“Next”
命名工程,其他按照默认
点击“Finish”完成工程的创建
修改项目的属性
首先修改Modules选项
在src下创建两个文件夹,并把其属性改为source
下面修改Libraries
将Spark开发需要的jar包导进来
加入后:
导入包完成后,在工程的scala下面创建一个package
创建一个Object对象
构建Spark Driver代码
该程序是对搜狗日志的处理代码
接下来进行打包,使用Project Structure的Artifacts
使用From modules with dependencies
选择Main Class
点击“OK”
把名称改为FirstSparkAppJar
因为每台机器上都安装了Scala和Spark,所以可以把Scala和Spark相关的jar文件都删掉
接下来进行Build
选择“Build Artifacts”
第一次选择Build,以后同一个工程要选择Rebuild,然后等待编译完成
下面使用spark-submit运行程序
最后任务运行完成
二、基于SBT方式
开发工具下载
Spark开发需要以下开发编译工具:
1、Scala IDE:本文以IntelliJ IDEA为例进行开发,下载地址:
https://www.jetbrains.com/idea/download/
2、SBT(Simple Build Tool)编译工具下载:
http://www.scala-sbt.org/download.html
下载安装后,在DOS下执行sbt命令下载其所需要的jar包:
默认jar包(.idea-build、.ivy2、.sbt)下载到C盘用户目录下
(注意:使用命令sbt进行下载时要确保网速,最好使用代理下载)
开发工具配置
1、IntelliJ IDEA开发配置:
(1) 下载Scala插件:选择Configure下的Plugins进入下图
选择Install JetBrains plugin,搜索Scala进行下载。
(2) 创建基于SBT的Scala工程:
(3) 设置工程名称以及Scala和SBT版本:
最好将Download两个选项取消,否则会覆盖之前用户目录下的SBTjar包,造成编译不通过等错误
SBT和Scala的版本号在C盘用户目录下可以看出:
C:\Users\用户\.sbt\boot\scala-2.10.4\org.scala-sbt\sbt\0.13.8
这里可以一次性设置正确,也可以后续修改配置文件(build.sbt修改scala版本,build.properties修改sbt版本)进行修改同步。
工程路径不要使用中文,否则即使编译成功打成jar包也无法执行。
(4) 基于SBT的Scala程序对工程的结构要求比较苛刻,需要建立如下目录结构:
(5) 添加Spark插件:
准备工作完成,下面进行Spark程序开发
编写代码
下面以类wordcount程序为例:
编写Spark程序:
请不要使用InteiiJ IDEA进行编译(汉字导致后面编译不过去)
编译和执行
(1)使用SBT进行编译和打包:
DOS下进入工程目录下,使用sbt命令进行编译和打包:
默认打的jar在工程目录test\target\scala-2.10下
(2)将jar包上传到服务器执行:
使用命令:
spark-submit --class test--master yarn test_2.10-0.1-SNAPSHOT.jar 100
更多的参数详见官方文档