清明假期折腾了两天,总结了两种方式使用IDE进行spark程序,记录一下:
第一种方法比较简单,两种方式都是采用SBT进行编译的。
注意:本地不需要安装Scala程序,否则在编译程序时有版本兼容性问题。
一、基于Non-SBT方式
创建一个Scala IDEA工程
![1.png wKioL1Uw_W6RTtXzAADv8hogz8w055.jpg](https://i-blog.csdnimg.cn/blog_migrate/138ec993db8a9b7c02b4d300c2215c84.jpeg)
我们使用Non-SBT的方式,点击“Next”
![1.png wKioL1Uw_biRUEB1AAGcmEwvV7E233.jpg](https://i-blog.csdnimg.cn/blog_migrate/549695747bbe24ef2799f67fc1f657e7.jpeg)
命名工程,其他按照默认
![1.png wKiom1Uw_KDQYIGlAAGRVxi3MMs169.jpg](https://i-blog.csdnimg.cn/blog_migrate/ae80b7fc4bf717e9904f298f32ae719a.jpeg)
点击“Finish”完成工程的创建
![1.png wKiom1Uw_NrBpqj5AAEQMJ0boUU026.jpg](https://i-blog.csdnimg.cn/blog_migrate/532acfc214ce8b6dcbfab59106ce4ee1.jpeg)
修改项目的属性
![1.png wKioL1Uw_lrSBokLAAIZ4fEOMCY459.jpg](https://i-blog.csdnimg.cn/blog_migrate/4adfb681f3975ea47ce6f143ec400267.jpeg)
首先修改Modules选项
![1.png wKiom1Uw_S2Br-RlAAGxDLlS1PE811.jpg](https://i-blog.csdnimg.cn/blog_migrate/e4b509cd9afbd9f015ba76c320870804.jpeg)
在src下创建两个文件夹,并把其属性改为source
![1.png wKioL1Uw_q-STTmvAAIBzio05jU421.jpg](https://i-blog.csdnimg.cn/blog_migrate/bbb4ecb76f8dfae911f73e0a9da8d567.jpeg)
下面修改Libraries
![1.png wKiom1Uw_ZGgDh87AAGaa3ZcNZo061.jpg](https://i-blog.csdnimg.cn/blog_migrate/4600db7ec475ab4358e33a561a7acb84.jpeg)
将Spark开发需要的jar包导进来
![1.png wKioL1Uw_wOwSETZAAJWLRmQrpQ623.jpg](https://i-blog.csdnimg.cn/blog_migrate/424c3c5f7a6a2eaf4bbca101438dc499.jpeg)
加入后:
![1.png wKioL1Uw_yLAeabkAAFXMb20-k8196.jpg](https://i-blog.csdnimg.cn/blog_migrate/29e7c95cb7a50d67106eca892b38a5bc.jpeg)
导入包完成后,在工程的scala下面创建一个package
![1.png wKioL1Uw_z_h2uTKAAGsxUhzL30651.jpg](https://i-blog.csdnimg.cn/blog_migrate/e43a793973f2976c38a4352f546d4924.jpeg)
创建一个Object对象
![1.png wKiom1Uw_grxuoo4AAGXviNcKQw217.jpg](https://i-blog.csdnimg.cn/blog_migrate/22b46bca77098631fe057d7fedb99f39.jpeg)
构建Spark Driver代码
![1.png wKiom1Uw_i-A-livAAG7j_bnMEs430.jpg](https://i-blog.csdnimg.cn/blog_migrate/d5920d774789669ac5be2e84797a28ef.jpeg)
该程序是对搜狗日志的处理代码
接下来进行打包,使用Project Structure的Artifacts
![1.png wKioL1Uw_6ODQug7AAECG7Txdu8331.jpg](https://i-blog.csdnimg.cn/blog_migrate/ac8935f99af97548208fb585441d5220.jpeg)
使用From modules with dependencies
![1.png wKiom1Uw_m7zsayvAADwz1cykkI686.jpg](https://i-blog.csdnimg.cn/blog_migrate/20864ecdfd499cb5ee5050bdc888412b.jpeg)
![1.png wKioL1Uw_9mTLkG1AADiAufDfUA742.jpg](https://i-blog.csdnimg.cn/blog_migrate/067905e9974812e3af020908c33adef8.jpeg)
选择Main Class
![1.png wKiom1Uw_qKgh1ixAADxuLhxrNI042.jpg](https://i-blog.csdnimg.cn/blog_migrate/26db964be4831831bd8bb8d022aea982.jpeg)
![1.png wKioL1UxABbgGWegAAFxfcRbbgg320.jpg](https://i-blog.csdnimg.cn/blog_migrate/4b1e6f05ab24fb29c4d8af6c12726d9c.jpeg)
点击“OK”
![1.png wKioL1UxADTgc021AAGxXZGxmuI537.jpg](https://i-blog.csdnimg.cn/blog_migrate/53d0e3faf58be81015ff9b8347aebfed.jpeg)
把名称改为FirstSparkAppJar
![1.png wKiom1Uw_vzTmRrdAAJFnvfO97g915.jpg](https://i-blog.csdnimg.cn/blog_migrate/0e27ba5ca8b9f71dfc748545061d5206.jpeg)
因为每台机器上都安装了Scala和Spark,所以可以把Scala和Spark相关的jar文件都删掉
![1.png wKioL1UxAG2iD9sqAAFhP8reeY0753.jpg](https://i-blog.csdnimg.cn/blog_migrate/0c4dfcd3fddba8a1ab98af0a64f7b615.jpeg)
接下来进行Build
![1.png wKiom1Uw_zihPn3dAAGI_9Z49rI498.jpg](https://i-blog.csdnimg.cn/blog_migrate/ec68c64e1eafd20d243ca94e67bf1cd2.jpeg)
选择“Build Artifacts”
![1.png wKiom1Uw_1nAAaUxAAB1Rl4ca0w127.jpg](https://i-blog.csdnimg.cn/blog_migrate/13af7ce7ae1c1b9484f9502e369874b6.jpeg)
第一次选择Build,以后同一个工程要选择Rebuild,然后等待编译完成
![1.png wKioL1UxAMuz2YFaAABtCTV6Y8o755.jpg](https://i-blog.csdnimg.cn/blog_migrate/d7e65f9fe79f9e02537f5ca0febab4e4.jpeg)
下面使用spark-submit运行程序
![1.png wKioL1UxAOPh4P5fAAEHPCkIfB4979.jpg](https://i-blog.csdnimg.cn/blog_migrate/ec75986ce6e59aa8d733b6a998d47671.jpeg)
最后任务运行完成
![1.png wKiom1Uw_6uC3GgwAAX9_Yv1lcs243.jpg](https://i-blog.csdnimg.cn/blog_migrate/89765f0b94276d2b274eef23b19e5d9e.jpeg)
二、基于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包:
![1.png wKioL1UxAYLCmfo4AAARGOs6v50207.jpg](https://i-blog.csdnimg.cn/blog_migrate/d2a3a0c0f47f24b86c1eb07a551126c6.jpeg)
默认jar包(.idea-build、.ivy2、.sbt)下载到C盘用户目录下
(注意:使用命令sbt进行下载时要确保网速,最好使用代理下载)
开发工具配置
1、IntelliJ IDEA开发配置:
(1) 下载Scala插件:选择Configure下的Plugins进入下图
选择Install JetBrains plugin,搜索Scala进行下载。
(2) 创建基于SBT的Scala工程:
![1.png wKiom1UxAM_REor9AAFW7Qe8sfM628.jpg](https://i-blog.csdnimg.cn/blog_migrate/838aaf884e02cb48cd17f966202f1005.jpeg)
(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程序对工程的结构要求比较苛刻,需要建立如下目录结构:
![1.png wKiom1UxAViwFAJRAAIvAPorWiY092.jpg](https://i-blog.csdnimg.cn/blog_migrate/337c0bbadab8a055af085bba8484e584.jpeg)
(5) 添加Spark插件:
注意:同时该插件需要添加到lib目录下(操作系统复制即可)
准备工作完成,下面进行Spark程序开发
编写代码
下面以类wordcount程序为例:
编写Spark程序:
![1.png wKioL1UxAxeQl_4FAAK1eT5vwAc317.jpg](https://i-blog.csdnimg.cn/blog_migrate/bab3756fcac7dc8adb3b899454c9d469.jpeg)
请不要使用InteiiJ IDEA进行编译(汉字导致后面编译不过去)
编译和执行
(1)使用SBT进行编译和打包:
DOS下进入工程目录下,使用sbt命令进行编译和打包:
![1.png wKiom1UxAfXDk-EOAACqxPsUF6A456.jpg](https://i-blog.csdnimg.cn/blog_migrate/864bdf347576c139eeb655cd4181fb8a.jpeg)
![1.png wKiom1UxAgmTLLs3AADnj-Sjico004.jpg](https://i-blog.csdnimg.cn/blog_migrate/a171a3c130d7f4db6eba140d39dcb074.jpeg)
默认打的jar在工程目录test\target\scala-2.10下
(2)将jar包上传到服务器执行:
使用命令:
spark-submit --class test--master yarn test_2.10-0.1-SNAPSHOT.jar 100
更多的参数详见官方文档
![1.png wKioL1UxA5zQQcPFAAMbGsPlGXU256.jpg](https://i-blog.csdnimg.cn/blog_migrate/37da8165e9ff2b1ef02d5e17329b8fe1.jpeg)