首先,如果想要在hive 3.1.3上使用spark 3.0.0,不可避免地要重新编译hive

如果只是配置了hive-site.xml和spark-defaults.conf,那么在插入测试的时候会报如下错误: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the root cause.

1. 下载hive源码包

把hive 3.1.3 的源码包下载到本地,目的是可以用intellij打开,方便修改相关源码。 hive源码包

2. 解压并用idea打开,改写源码

解压后,文件夹内有一个同名文件夹apache-hive-3.1.3-src,用intellij打开。

修改内容参考链接:修改内容 具体需要修改的部分如下

以上圈起来的部分,一个个点进去照着改。怕有的人看不懂,以下图为例:

最上面表示文件名,直接从intellij找到相关文件修改即可。绿色部分表示要添加的内容,红色部分表示要删除的内容。

修改完毕后,重新打包成 .tar.gz 的格式。

如果你不想自己动手,没关系,我提供了修改好的源码包,里面还有不带hadoop的纯净spark。为啥没有maven编译好的jar包呢,因为租的服务器带宽太垃了,下到本地要半年。 链接:https://pan.baidu.com/s/1FCOJp29P56xZ8RMUYD9A3w 提取码:jjc6

3. 上传压缩包至服务器并maven编译

上传至服务器,例如我上传至 /opt/software/。 在下一步操作前,要先自行安装好maven,没安装的请自行百度。

cd $MAVEN_HOME/conf/

vim settings.xml

在 settings.xml 中,添加以下镜像:

alimaven

aliyun maven

http://maven.aliyun.com/nexus/content/groups/public/

central

aliyunmaven

*

spring-plugin

https://maven.aliyun.com/repository/spring-plugin

repo2

Mirror from Maven Repo2

https://repo.spring.io/plugins-release/

central

进入刚刚压缩包上传的路径,解压压缩包:

cd /opt/software/

# 解压

tar -zxvf apache-hive-3.1.3-src.tar.gz

# 进入目录

cd apache-hive-3.1.3-src/

# 使用Maven进行编译打包

mvn clean package -Pdist -DskipTests -Dmaven.javadoc.skip=true

打包需要一段时间,完成后,进入到 cd packaging/target/ 文件夹,看到有一个编译好的包:

4. 改造原有hive环境

由于我之前是安装过hive的,此时需要先把旧的hive重命名,比如mv hive hive_old 然后解压我们编译好的包 tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/module/ 这里我把解压出来的文件夹重命名成hive。

# 拷贝原先的 hive-site.xml 和 spark-defaults.conf

cp hive_old/conf/hive-site.xml hive/conf/

cp hive_old/conf/spark-defaults.conf hive/conf/

# 拷贝lib下的 mysql jar包,没有的可以自行下载,我上面的链接也有提供

cp hive_old/lib/mysql-connector-java-5.1.37-bin.jar hive/lib/

5. 上传纯净spark jar包至集群

需要spark-3.0.0-bin-without-hadoop.tgz,可以自行下载,也可以从我的链接里下

# 解压

tar -zxvf spark-3.0.0-bin-without-hadoop.tgz

# 创建目录

hadoop fs -mkdir /spark-jars

# 上传至集群

hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars

6. 启动集群并测试

分别启动 hadoop, metastore, hiveserver2 然后用 bin/hive 启动hive测试一下

create table student(id int, name string);

insert into table student values(1,'abc');

如果出现以下内容,表示 hive 3.1.3 on spark 3.0.0 部署成功了

如果本文对你有帮助,请点个赞支持一下~~

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: