IntelliJ IDEA开发Spark、打JAR包

时间:2022-01-01 09:38:00

清明假期折腾了两天,总结了两种方式使用IDE进行spark程序,记录一下:

第一种方法比较简单,两种方式都是采用SBT进行编译的。

注意:本地不需要安装Scala程序,否则在编译程序时有版本兼容性问题。


一、基于Non-SBT方式


创建一个Scala IDEA工程

IntelliJ IDEA开发Spark、打JAR包

我们使用Non-SBT的方式,点击“Next”

IntelliJ IDEA开发Spark、打JAR包

命名工程,其他按照默认

IntelliJ IDEA开发Spark、打JAR包

点击“Finish”完成工程的创建

IntelliJ IDEA开发Spark、打JAR包

修改项目的属性

IntelliJ IDEA开发Spark、打JAR包

首先修改Modules选项

IntelliJ IDEA开发Spark、打JAR包

在src下创建两个文件夹,并把其属性改为source

IntelliJ IDEA开发Spark、打JAR包

下面修改Libraries

IntelliJ IDEA开发Spark、打JAR包

将Spark开发需要的jar包导进来

IntelliJ IDEA开发Spark、打JAR包

加入后:

IntelliJ IDEA开发Spark、打JAR包

导入包完成后,在工程的scala下面创建一个package

IntelliJ IDEA开发Spark、打JAR包

创建一个Object对象

IntelliJ IDEA开发Spark、打JAR包

构建Spark Driver代码

IntelliJ IDEA开发Spark、打JAR包

该程序是对搜狗日志的处理代码

接下来进行打包,使用Project Structure的Artifacts

IntelliJ IDEA开发Spark、打JAR包

使用From modules with dependencies

IntelliJ IDEA开发Spark、打JAR包

IntelliJ IDEA开发Spark、打JAR包

选择Main Class

IntelliJ IDEA开发Spark、打JAR包

IntelliJ IDEA开发Spark、打JAR包

点击“OK”

IntelliJ IDEA开发Spark、打JAR包

把名称改为FirstSparkAppJar

IntelliJ IDEA开发Spark、打JAR包

因为每台机器上都安装了Scala和Spark,所以可以把Scala和Spark相关的jar文件都删掉

IntelliJ IDEA开发Spark、打JAR包

接下来进行Build

IntelliJ IDEA开发Spark、打JAR包

选择“Build Artifacts”

IntelliJ IDEA开发Spark、打JAR包

第一次选择Build,以后同一个工程要选择Rebuild,然后等待编译完成

IntelliJ IDEA开发Spark、打JAR包

下面使用spark-submit运行程序

IntelliJ IDEA开发Spark、打JAR包

最后任务运行完成

IntelliJ IDEA开发Spark、打JAR包



二、基于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包:

IntelliJ IDEA开发Spark、打JAR包

默认jar包(.idea-build、.ivy2、.sbt)下载到C盘用户目录下

(注意:使用命令sbt进行下载时要确保网速,最好使用代理下载)


开发工具配置


1、IntelliJ IDEA开发配置:

(1) 下载Scala插件:选择Configure下的Plugins进入下图

IntelliJ IDEA开发Spark、打JAR包选择Install JetBrains plugin,搜索Scala进行下载。

(2) 创建基于SBT的Scala工程:

IntelliJ IDEA开发Spark、打JAR包

(3) 设置工程名称以及Scala和SBT版本:

IntelliJ IDEA开发Spark、打JAR包注意:

  1. 最好将Download两个选项取消,否则会覆盖之前用户目录下的SBTjar包,造成编译不通过等错误

  2. SBT和Scala的版本号在C盘用户目录下可以看出:

    C:\Users\用户\.sbt\boot\scala-2.10.4\org.scala-sbt\sbt\0.13.8

    这里可以一次性设置正确,也可以后续修改配置文件(build.sbt修改scala版本,build.properties修改sbt版本)进行修改同步。

  3. 工程路径不要使用中文,否则即使编译成功打成jar包也无法执行。


(4) 基于SBT的Scala程序对工程的结构要求比较苛刻,需要建立如下目录结构:

IntelliJ IDEA开发Spark、打JAR包

(5) 添加Spark插件:

IntelliJ IDEA开发Spark、打JAR包注意:同时该插件需要添加到lib目录下(操作系统复制即可)


准备工作完成,下面进行Spark程序开发


编写代码

下面以类wordcount程序为例:

编写Spark程序:

IntelliJ IDEA开发Spark、打JAR包

请不要使用InteiiJ IDEA进行编译(汉字导致后面编译不过去)


编译和执行

(1)使用SBT进行编译和打包:

DOS下进入工程目录下,使用sbt命令进行编译和打包:

IntelliJ IDEA开发Spark、打JAR包

IntelliJ IDEA开发Spark、打JAR包

默认打的jar在工程目录test\target\scala-2.10下

(2)将jar包上传到服务器执行:

使用命令:

spark-submit --class test--master yarn test_2.10-0.1-SNAPSHOT.jar 100

更多的参数详见官方文档

IntelliJ IDEA开发Spark、打JAR包