Windows环境编译Spark源码

时间:2024-08-06 14:36:08

一、下载源码包

  1. 下载地址有官网和github:

  http://spark.apache.org/downloads.html

  https://github.com/apache/spark

  Linux服务器上直接下载:wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0.tgz

  2. 解压源码

二、解压环境

  需要maven、jdk、git、scala、hadoop环境,并配置环境变量。

二、使用Maven编译Spark

  先找到解压后的spark文件里的pom.xml把maven、jdk、scala、hadoop改成当前安装的版本。如图:

Windows环境编译Spark源码

  maven库的地址建议换成阿里的地址:http://maven.aliyun.com/nexus/content/groups/public

  在编译过程需要保证编译机器的是联网的,以保证Maven从网上下载其依赖包。另外,编译前需要设置JVM内存大小,否则在编译过程中,会由于默认内存小而出现内存溢出的错误。编译执行脚本如下,其中,参数-P表示激活依赖的程序及版本,-Dskip Tests表示编译时跳过测试环节。

  1、设置maven内存的环境变量

    MAVEN_OPTS=-Xmx2g -XX:MaxPermSize=2048M -XX:ReservedCodeCacheSize=2048M

  2、右击spark-2.4.0文件夹,选择Git Bash here,弹出git窗口,输入以下命令:

  ./build/mvn -Pyarn -Phadoop-2.8.4 -Dhadoop.version=2.8.4 -DskipTests clean package

  整个编译过程编译了约29个任务,每个版本的数量不同。如果是已经下载依赖包的情况,则编译耗时1分钟左右。由于编译过程中需要下载较多的依赖包,因此整个编译时间取决于网速,最终编译完成后的文件夹大约为899MB。整个编译可能会很长,要耐心等待。

  最终成功结果如下图:

Windows环境编译Spark源码

  如果在编译过程中出现了错误,解决后再重新执行编译命令:

  错误1:Failed to collect dependencies at org.jpmml:pmml-model:jar:1.2.15

    Could not resolve dependencies for project org.apache.spark:spark-core_2.11:jar:2.4.0

  这两种都是依赖包下载失败,为了避免重新跑脚本还会失败浪费时间,建议使用idea加载jar包,或者到maven官网手动下载好放到maven本地库里。

  错误2:有时第二次编译时,会删除源码包里面target里面的文件失败,可以手动删除,或者重新解压个新的spark源码文件,再编译。