获取Spark源码
开发中难免需要修改Spark源码, 构建自己的Spark库, 并在自己的项目中引用. 下面来说一下具体步骤.
有两个方法:
- 从 github 上 clone. 但是如果直接 clone 的话,获取到的是最新的,正在开发的版本,并不稳定. 想要获取之前版本的话, 要指定版本:
git clone git://github.com/apache/spark.git -b branch-2.2
我要用的版本是2.1.1, 而2.2中包含了2.1的稳定版, 所以 clone 了2.2的 - 从spark官网上下载,指定版本并且选择 package type 为 source code.
构建项目
先验一下货. 进入到spark的根目录, 打开控制台, 执行以下命令123$ build/mvn -DskipTests clean package# or$ build/sbt -DskipTests clean package
使用 maven 是 maven 会自带zinc加速编译, 但是根据目前的体验来说,并木有感受到. 总的来说, sbt和maven其实在这方面是差不多的.
接下来就是等了, 完成了之后可以在根目录下的./assembly/target/scala-2.11/jars
的这个目录里找到所有生成的 jar 文件, 然后在自己的项目里添加 External Libraries, 把整个文件夹加进去,就可以成功引用Spark里面所有的东西了.
修改并编译
修改代码很简单了, 找到你要修改的文件并修改就行了. 或者新创建一个文件扩展功能也可以. 但是要注意的是 Spark 项目使用了 Scala-style-check, 该插件会检查代码格式, 不符合格式的话会编译不通过. sbt 提供了增量式编译功能, 使用 /build/sbt compile
命令会在修改过的 module 的目录下生成新的 jar 文件, 路径为 ./module/target/scala-2.11/
. 但是由于我的项目是直接引用上面的整个文件夹, 增量式编译并不适用. 所以还是要使用 package
选项构建项目.