最近准备开始看spark源码,第一步当然是要搭建一个舒适的spark源码阅读环境,通过单步调试才能顺藤摸瓜的理清具体脉络,有助与提高阅读效率。在搭建环境过程中,遇到一些奇怪的错误,但居然都鬼使神差的搞定了,人品啊,哈哈哈
Spark的源码使用scala语言编写的,说到scala的IDE工具,首选当然是idea,idea安装scala插件我这里就详说了,除了idea外,我们还需要安装的软件有:
- maven
- sbt
- git
1. 下载spark源码
对于源码,可以使用git从github上下载,也可以在spark官网上直接下载
http://spark.apache.org/
https://github.com/apache/spark.git
下载完成后,解压到具体目录。
2. 导入到idea(已安装scala插件)
直接选择import project
选择刚刚解压的spark目录
next 选择sbt项目
一直next,直至导入完成
慢慢等待吧,这是在搞定sbt依赖,可以选择去吃个饭,再过来看看。
3. 编译
在使用idea进行源码编译过程中,会遇到很多错误,基本上都是由于依赖引发,这里我就我所遇到的问题
问题1:
这个问题我弄好很久,最终在网上找到答案,原因flume-sink所需的部分源文件idea不会自动下载,所有编译时不能通过。
解决方法:
打开View -> Tool Windows -> Maven Projects
右键,选择Generate Sources and Update Folders
随后,Intellij IDEA会自动下载Flume Sink相关的包,搞定这个错误
其他有关编译报错问题,可以参考这个链接
http://apache-spark-user-list.1001560.n3.nabble.com/
4. 调试LogQuery
我们选择对LogQery类进行调试,当然也可以在example下面选择其他的测试类或者自己编写类,方法类似
- Run->Edit configurations
- 添加Application,注意右侧窗口中配置项内容的填写,分别为Main class, vm options, working directory, use classpath of module
-Dspark.master=local 指定Spark的运行模式,可根据需要作适当修改。
使用ctrl+n找到LogQuery类,可以先查看具体的测试代码,
可以直接运行,或者对源代码打断点进行单步调试
大功告成!!!!