spark2.4.4-CDH6.3.0编译
在之前的文章中描述了Spark2.1+CDH5.x的编译步骤,
spark-2.1.0-bin-2.6.0-cdh5.x源码编译
但是,Spark2.4.4的编译命令和前版本略有区别:
需要去掉hadoop-3.0.0-cdh6.3.0
的 hadoop-
前缀,这一步很关键,否则会报找不到
hadoop-client jar
包的错误。
形如:
./build/mvn -Pyarn -Phadoop-3.0 -Dhadoop.version=3.0.0-cdh6.3.0 -Phive -Phive-thriftserver -DskipTests clean package
首先会下载依赖的zinic与scala
:

exec: curl --progress-bar -L https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz
如果网速感人的话,可以自己先下载zinic和scala
到build
目录下,
编译成可执行的tgz包(默认基于hive1.2.1
):
./dev/make-distribution.sh \
--name 3.0.0-cdh6.3.0 \
--tgz \
-Pyarn \
-Phadoop-3.0 \
-Phive \
-Phive-thriftserver \
-Dhadoop.version=3.0.0-cdh6.3.0
使用自己安装的maven进行编译,其中-T参数是设置编译的线程数,这里设置的是5,
mvn -T 5 -DskipTests clean package
#spark自带的maven
#MVN="$SPARK_HOME/build/mvn"
#使用自己安装的maven
MVN="$MAVEN_HOME/bin/mvn"
- 注意事项:
1、官方脚本自带一些环境变量检查,会导致编译检查耗时,修改make-distribution.sh
脚本,将VERSION ,SCALA_VERSION ,SPARK_HADOOP_VERSION ,SPARK_HIVE
注释掉,直接写上自己的版本号。
#VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null | grep -v "INFO" | tail -n 1)
# 指的是spark2.4.4这个版本
#SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\
# 指的是scala 2.11
# | grep -v "INFO"\
# | tail -n 1)
#SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\
# 指的是hadoop.version=3.0.0
# | grep -v "INFO"\
# | tail -n 1)
#SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null\
# SPARK_HIVE为1表示支持
# | grep -v "INFO"\
# | fgrep --count "<id>hive</id>";\
# # Reset exit status to 0, otherwise the script stops here if the last grep finds nothing\
# # because we use "set -o pipefail"
# echo -n)
将以下的内容贴在注释掉的那个脚本的后面即可:
VERSION=2.4.4
SCALA_VERSION=2.11
SPARK_HADOOP_VERSION=3.0.0-cdh6.3.0
SPARK_HIVE=1

2、编译没有hive的spark包
./dev/make-distribution.sh --name "hadoop3-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-3.0,parquet-provided,orc-provided"
3、spark-2.4.4+Hive2.1.1
编译怎么样呢,spark-hive
和 spark-hive-thriftserver
跟hive-1.2.1
耦合很深。只改 hive
版本编译基本不可能。
mvn -X
查看详细的编译debug信息:
./build/mvn -X -Pyarn -Phadoop-3.0 -Dhadoop.version=3.0.0-cdh6.3.0 -Phive -Phive-thriftserver -Dhadoop.version=3.0.0-cdh6.3.0 -Dhive.version=2.1.1-cdh6.3.0 -Dhive.group=org.apache.hive -DskipTests clean package

【参考】
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started
https://blog.csdn.net/liutielei/article/details/81710866
https://blog.csdn.net/u011940366/article/details/99850247
