【原创】使用Scala IDE编译Spark源代码

【原创】使用Scala IDE编译Spark源代码
Spark源代码下载地址: http://spark.apache.org/downloads.html

下载后,直接用 Scala IDE 通过已存在的项目导入到Eclipse workspace中去,然后Eclipse会自动进行编译。第一次编译会报很多错误,不过总的来说,导致编译错误的源头有三个:
1、Scala编译器版本错误
2、Eclipse Maven插件不能自动识别spark project的一些pom,报Plugin execution not covered by lifecycle configuration异常
3、一些项目,maven会自动生成scala和java文件,但是这些自动生成的代码文件没有配置在eclipse项目的classpath里。

针对第一种错误,比较简单,对于每个scala项目,右键属性选择spark对应的scala编译器版本。



当然spark代码里的项目有几十个,只能手工一个个设置了,比较傻,没办法,还不停的弹出对话框,不停地回车吧。

编译的难点主要在第二种错误上,比如spark-sql项目的pom, 里面有个build-helper-maven-plugin,它下面的execution,eclipse maven插件无法识别,报Plugin execution not covered by lifecycle configuration异常,解决方案参见 https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html,先使用 Eclipse  quick-fix选项自动修复,忽略此 maven goal,Eclipse 会为 pom.xml自动添加一段xml代码,包含在 pluginManagement section中,里面有一段 <action><ignore/></action>,此处手动修改成
< action >
     < execute >
         < runOnIncremental >false </ runOnIncremental >
     </ execute >
</ action >
然后右键 maven update project 就OK了。

一共有5个project需要修改pom,如图


修改pom后重新编译,依旧会报一些错误,这些错误都是由于maven自动生成的java和scala代码没有添加到classpath里导致的编译错误,只需要手工添加一下即可,需要手工添加项目有 spark-streaming-flume-sink 的 src_managed\main\compiled_avro 目录 和 spark-sql 项目的 test\gen-java 目录。

全部编译好以后的截图:


修改完以后,Spark代码全部编译下来大概耗时25分钟左右(CPU 双核 I7 4600)

原文地址: http://www.blogjava.net/cnfree/archive/2016/11/08/431965.html

你可能感兴趣的:(【原创】使用Scala IDE编译Spark源代码)