用intellij idea写spark代码

最近在研究spark源代码,做一些与spark mlib相关的工作,需要需要自己写一些相关的spark代码。故整理一下。
首先,下载intellij idea 官方程序,我这里下载的是其社区版(免费)。接着下载spark2.0源代码以及spark2.0 预编译版本。再下载并安装scala程序。当然如果你没有安装java sdk的话,那你需要安装java sdk(这些基本安装就不介绍了)。接下来开始正式开工了。
这里以spark-2.0.2/examples/src/main/scala/org/apache/spark/examples/ml/PipelineExample.scala作为一个例子来详细叙述。
安装好intellij idea后,那么直接创建新的project。
如果以前有用intellij idea写过project的话,那在程序左上角点击新建工程:
用intellij idea写spark代码_第1张图片

因为这里是scala程序,所以选择Scala
用intellij idea写spark代码_第2张图片
点击Next之后,这里需要注意根据java版本和scala版本选择相应的sdk(红线部分)。
用intellij idea写spark代码_第3张图片
点击Finish,就完成了pipe项目的初始化创建工作了。接下来,我们需要向pipe里面添加代码了,这里我们将PipelineExample.scala文件放到src 目录下面,并点击同步。用intellij idea写spark代码_第4张图片
这样鼠标点击src,就可以看到PipelineExample.scala文件了。
用intellij idea写spark代码_第5张图片
此时,点击进入PipelineExample.scala文件,会发现文件上很多红色提示符,意味着很多编译错误。
用intellij idea写spark代码_第6张图片
这里,由于没有加载依赖包,导致编译器很多不识别。为了解决这些问题,可以去官方下载spark的预编译版本,预编译版本里面有个jars文件夹。接下来就该把jars文件夹里的包导入到我们的工程里去了,这里 选择File->ProjectStructure
用intellij idea写spark代码_第7张图片
在弹出来的小窗口中,选择modules及Dependencies(箭头所示)。
用intellij idea写spark代码_第8张图片
点击右侧的+号,这里跳出来的jars or directories,点击该选项后,会弹出文件选择框。这里既可以添加单独的jars包,也可以添加包含jars包的文件夹,这里导入预编译版里面的jars文件夹
用intellij idea写spark代码_第9张图片
点击OK后,文件选择框会关闭。这时先点击窗口右下角的Apply,再点击Apply左边的OK。窗口关闭,jars包就会被导入到工程里了。Intellij idea 会自动建立包的索引。

到这里,会发现原本那些红字全部消失了,代表编译通过了,这里可以尝试在编译器内运行了.
用intellij idea写spark代码_第10张图片
用intellij idea写spark代码_第11张图片
因为在windows下,没有配置相应的hadoop依赖及其 环境,所以目前运行中会遇到一些错误,无法初始化sparkContext。这时候,我们可以将该程序打包成jars,放到布置好环境的linux下面运行。具体方式如下:首先File->ProjectStructure, 打开面板后,作如下操作,
用intellij idea写spark代码_第12张图片
点击后会弹出面板,选择copy to output directory and link via manifest, 再点击红线部分
用intellij idea写spark代码_第13张图片
会继续弹出一个面板,选择Mainclass.
用intellij idea写spark代码_第14张图片
这里由于我把PipelineExample.scala 里面的package那一行注释掉了,所以我的代码位于default package下面,因而它显示的是PipelineExample< default>,选中后,该面板就自动关闭了。
用intellij idea写spark代码_第15张图片
接着点击Apply 和OK。
用intellij idea写spark代码_第16张图片
窗口就会关闭了。
工程自动为我们生成出来一个MANIFEST.MF。接下来点击build。
用intellij idea写spark代码_第17张图片
选择Build Artifacts
用intellij idea写spark代码_第18张图片
会跳出个小窗口。点击Build
用intellij idea写spark代码_第19张图片
Intellij idea会自动生成一个out文件夹,里面有个artifacts文件夹,在下面就是pipe_jar文件夹,里面包括pipe.jar以及它所依赖的jar包。
用intellij idea写spark代码_第20张图片

到这里我们已经完成了代码的编译和打包工作了,接下来该执行我们生成的jar了。
把out下面的 artifacts文件夹丢到linux上面, 这里我直接将pipe目录页带进去了
执行命令
$SPARK_HOME/bin/spark-submit –class PipelineExample /root/pipe/out/artifacts/pipe_jar/pipe.jar
就可以看到我们的代码正在被执行了。

这里因为一个只涉及到spark 预编译版本的jars文件夹下的包,如果你需要其他的依赖包,可以去官方网站
https://mvnrepository.com/去搜索官方的一些jars 包。当然如果你觉得太慢的话,可以利用阿里云的镜像http://maven.aliyun.com/nexus去搜索并下载相关的jars包,下载好jars包后,按照之前描述导入预编译版jars文件夹下的包的方式导入指定的包。

你可能感兴趣的:(spark)