美文网首页
spark2.4.4-CDH6.3.0编译

spark2.4.4-CDH6.3.0编译

作者: sparkle123 | 来源:发表于2019-11-14 20:27 被阅读0次

在之前的文章中描述了Spark2.1+CDH5.x的编译步骤,
spark-2.1.0-bin-2.6.0-cdh5.x源码编译

但是,Spark2.4.4的编译命令和前版本略有区别:
需要去掉hadoop-3.0.0-cdh6.3.0hadoop-前缀,这一步很关键,否则会报找不到
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:

下载zinc与scala
exec: curl --progress-bar -L https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz

如果网速感人的话,可以自己先下载zinic和scalabuild目录下,

编译成可执行的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
image.png

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-hivespark-hive-thriftserverhive-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


其他.png

相关文章

  • spark2.4.4-CDH6.3.0编译

    在之前的文章中描述了Spark2.1+CDH5.x的编译步骤,spark-2.1.0-bin-2.6.0-cdh5...

  • dtb文件编译

    反编译 编译 批量反编译

  • 编译过程与静态库&动态库

    一、编译过程 1、预编译(Preprocessing) 预编译即预处理,编译器不能直接对预编译命令进行编译,必须在...

  • 宏、const、static、extern使用详解

    宏与const的区别 编译时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译...

  • iOS const 与宏

    编译时刻:宏是预编译(编译之前处理),const是编译阶段。 编译检查:宏不做检查,不会报编译错误,只是替换,co...

  • 2020-09-09 RK系统编译

    编译uboot: 编译kernel: 环境配置: 编译系统:

  • 程序编译过程

    本文编译的文件cpu架构为X86_64。 编译型语言编译过程主要有预编译、编译、汇编、链接。 预编译This st...

  • 自己动手编译OpenJDK

    Linux下 编译 Centos 下编译OpenJDK Mac下编译 MacOS 下编译OpenJDK Windo...

  • 宏 const static extern的区别与使用

    一. const 与 宏的区别 编译时刻: 宏是预编译(编译之前处理), const是编译阶段处理 编译检查: 宏...

  • 晚期(运行期)优化

    HotSpot的即时编译器 解释器与编译器 编译对象与触发条件 编译过程 编译优化技术 如果还对其他的经典编译优化...

网友评论

      本文标题:spark2.4.4-CDH6.3.0编译

      本文链接:https://www.haomeiwen.com/subject/ekghictx.html