環境:
spark:2.4.4
maven:apache-maven-3.6.2
java: 1.8
背景:
修改了spark源碼,想基於此用spark的make-distribution.sh腳本重新打可部署的tar包,命令如下:
./dev/make-distribution.sh --name maruilei-spark --tgz -Phadoop-2.7 -Phive -Phive-thriftserver -Pyarn -Pkubernetes -Psparkr -DskipTests
問題:
報錯:
[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (scala-compile-first) on project spark-kubernetes_2.11: Execution scala-compile-first of goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile failed.: CompileFailed -> [Help 1]
辦法:
針對此問題,網上一般嘗試方法:
1. 添加依賴:
<dependency>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
</dependency>
2. 修改pom-parent.xml
<scalaVersion>${scala.version}</scalaVersion>
<recompileMode>incremental</recompileMode>
<useZincServer>true</useZincServer>
3. 檢查並kill掉後臺zinc進程:
ps -ef |grep hadoop
kill $pid
4. 可能跟maven版本有關:(這個可能遇到)
修改$MAVEN_HOME爲spark-2.4.4自帶的maven地址
或
修改make-distribution.sh腳本中第39行: MVN="$SPARK_HOME/build/mvn"
爲 MVN="$MAVEN_HOME/bin/mvn"
結論:
很不巧,上面的辦法對我都沒生效。
最終解決及思路:
考慮到報錯信息及上述方法未生效,我開始懷疑是否爲本機環境或代碼改的有問題。
首先把代碼都回退至原生代碼後,用相同的make-distribution.sh命令執行打tar包操作,成功;
恢復代碼後,失敗;
...尷尬...
檢查及修改代碼,去掉了一些不必要的修改及規範了幾處代碼,成功;
尷尬......