因为我原来对maven和sbt都不熟悉,因此使用两种方法都编译了一下。下面记录一下编译时候遇到的问题。然后介绍一下如果使用IntelliJ IDEA 13.1构建开发环境。
首先准备java环境和scala环境:
1. jdk 1.7
2. scala 2.11.1
1. maven
首先安装maven,我安装的是3.2.3, 可以直接下载binary。解压即可用。需要设置一下环境变量:
export MAVEN_HOME=/project/spark_maven/spark/apache-maven-3.2.3
export MAVEN_OPTS="-Xmx4096m -XX:MaxPermSize=4096m"
export PATH=$PATH:$MAVEN_HOME/bin
由于我的笔记本有16G内存,因此可以给maven比较大的内存。如果MAVEN_OPTS设置的不合理,那么会导致OOM的错误,具体信息可以看这里。
使用以下命令编译:
mvn -X -Pyarn -Phadoop-2.2 -Dhadoop.version=2.2.0 -DskipTests clean package
这里使用的是Apache Hadoop 2.2,如果使用比如其他的商业发行版,可以参照官网的信息去编译。
等待一段时间,如果没有error的话,恭喜你编译成功。下面是编译成功的结果:
2. sbt
sbt编译过程比较慢。如果运行sbt说sbt-launch.jar的错误,那么需要手动的安装以下,可以看这里。
实际上使用以下命令既可以开始编译了:
./sbt/sbt assembly
有时候由于网络问题可能导致编译hang在某个地方,或者你重启了,那么下次开始变异前需要删除$HOME/.ivy2/
.sbt.ivy.lock
。然后重启开始。sbt会进行增量编译。
3. IDEA
将sbt导入idea,先做以下准备工作:
./sbt/sbt gen-idea
如果发生了错误,再次进行。现在应该不需要设置代理即可完成了。如果要等待lock,那么参照上述的方法删除lock即可。
然后打开IDEA,点击Import Project:
选择工程的默认路径后,选择SBT Project
选择auto即可:
点击Finish即完成了工程的导入。
下面可以使用IDEA编译以下整个工程: