环境
工具 | 版本 |
---|---|
scala | 2.12.2 |
java | 1.8.0_92 |
sbt | 0.13.13 |
maven | 3.3.9 |
IDEA | CE 2017.1.4 |
macOS | 10.12.5 |
git clone
git clone https://github.com/apache/spark.git
编译源码
build/mvn -T 4 -DskipTests clean package
比较耗时,我在公司编译的,断断续续耗时大约2个小时。编译成功后如下图所示:
IDEA import
Menu -> File -> Open -> {spark dir}/pom.xml -> Open as Project
这个过程还是挺快的,几分钟就搞定了。成功以后的项目结构如下:
增量开发
我们在开发过程中,有一点小的修改,想看下效果,不想再重新编译一遍所有的依赖,而只想把新的改变编译一下。可以使用sbt
的增量编译。
build/sbt clean package//首次全量编译
export SPARK_PREPEND_CLASSES=true//增量
或
build/sbt ~compile//增量编译
ScalaStyle检查与IDEA自动格式化冲突
scalastyle-config.xml
配置了代码风格检查,但是与IDEA默认的格式化代码有部分冲突,我使用中报如下错误
//使用Javadoc样式缩进注释
Use Javadoc style indentation for multiline comments
//一行字符超过了100个
File line length exceeds 100 characters
//注释的开头要插入空格
Insert a space after the start of the comment
为了保持和spark官方的分割保持一样,我们修改IDEA的代码风格,首先接入codestyle
Preferences->Editor->Code Style->Scala
修改如下:
- ScalaDoc
- 取消Enable scaladoc formatting
- 取消Use scaladoc indent for leading asterisk
- Wrapping and Braces
- Method declaration parameters
- 取消 Align when multiline
- 勾选 Ensure right margin is not exceeded(Code style下设置Right margin=100)
- Method declaration parameters
上下的一个注释,是因为源码本身不规范,结尾以**/结尾了。删掉以后就恢复了。这只是解决了报错信息,但是还有很多代码风格和源码不一致,所以最后为了不造成之前的风格因为本地IDEA的格式化造成变更,建议局部格式化代码。不要使用全局格式化。看看能不能找到源码开发人员使用的Code Style配置文件,直接导入最好。