在windows7环境下,对spark源码以maven为基础构建,并进行代码调试。本文记录环境搭建和调试过程和遇到问题。
当前github上Spark master版本使用sbt和maven都可以使用IDEA进行工程导入,和版本构建。我是以maven进行导入和构建。sbt构建问题始终没有解决而放弃,不再赘述。
环境搭建软件版本信息:####
spark source code : 2.4.0
IDEA 版本: IntelliJ IDEA Community Edition 2017.2.5
命令行CLI 工具版本: Cmder.exe
λ scala -version
Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL
λ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
λ sbt -version
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=384m; support was removed in 8.0
[info] Set current project to root (in build file:/C:/)
[warn] The-
command is deprecated in favor ofonFailure
and will be removed in 0.14.0
λ mvn --version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: D:\ProgramFiles\maven-3.5.0\bin..
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: C:\Java\jdk1.8.0_60\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
源码构建和工程导入####
spark源码在编译构建时,会生成很多新代码(如spark sql支持语法格式解析等文件),所以须按照先构建,后导入工程。我是按照这个步骤进行,网上很多是直接导入IDEA。
版本构建
spark源代码支持maven和sbt均可以构建,本文的版本构建工具是maven。构建命令:
mvn -DskipTests clean install
官方构建方法,spark官方构建和测试
构建过程中,因为涉及到大量外部依赖。科学上网和合适的版本库是构建速度和成功的关键。阿里云库和oschina库完美解决这类问题,他们是好人,要不要点赞。
在maven的配置文件中,把maven的中央库换成如下。
阿里云 : http://maven.oschina.net/content/groups/public/
oschina: http://maven.oschina.net/content/groups/public/
配置完成之后,执行构建 开个黑or吃个鸡,构建也就差不多完成了。在构建时,提示方案链接超时,查了很久发现是,maven配置的代理无法访问。自行检查maven settings.xml代理配置:
<proxy> <id>Proxy</id> <active>true</active> <protocol>http</protocol> <host>proxy代理地址</host> <port>80</port> <nonProxyHosts>localhost</nonProxyHosts> </proxy>
工程导入
构建完成后,很多IDEA工程已经生成了。工程导入:IDEA 2017.2.5版本可以直接导入,也可以在导入工程,选择spark代码根目录下pom.xml按照IDEA的提示依次默认进行。编译完成后,工程导入会很顺利。
工程导入完成后,记得用IDEA(ctrl +F9)编译看是否存在问题。
工程调试
构建和导入完成后,工程调试进展很顺利,按照 如下资料进行:
#问题汇总####
- addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.3") 插件失败
插件地址:http://dl.bintray.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
另外检查scala的版本, 5.2.3插件需要2.10以上的scala版本。
没有采用sbt构建的原因很大一部分就是因为它。
- [ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M1:enforce (enforce-versions) on project spark-parent_2.11: Execution enforce-versions of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M1:enforce failed: Plugin org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M1 or one of its dependencies could not be resolved: Could not transfer artifact org.codehaus.plexus:plexus-interpolation:jar:1.14 .....
错误可能是由于版本没有构建成功,就导入工程导致。
- 访问版本库和依赖下载超时或者失败
检查网络代理、选择国内版本库、检查依赖版本是否和本机scala JDK版本兼容。
- maven构建和编译的版本是snapshot版本,如何在pomx.xml文件中修改?
不熟悉 maven,待解决
- windons如何发布release版本?
待解决
在搭建环境过程中遇到问题,轻描淡写的列出来。当时心情很丧,但总算过去了,记录下结果,希望对你有帮助。