安装Spark3之后Spark-SQL读不到之前安装好的Hive 数据库


前言

因为之前已经 安装过CDH 其中版本为 hive 2.1.1与spark 2.2.0 , 再另外安装Spark3之后,Spark3是调用自己default 的hive。无法连接之前安装过CDH的hive数据库。


一、问题?

透过新安装的Spark3连接hive结果只有default数据库,并无其他hive中已创建好的数据库,期望可以连接到能显示hive中其他的数据库。
在这里插入图片描述

二、解决方案

方法1.引入hive-site.xml

在安装spark3后发现spark/conf里面并没有hive-site.xml档案:
在这里插入图片描述
将hive安装目录下的hive-site.xml拷贝到SPARK_HOME/conf下!

方法2.很多步骤 ><

1.增加CDH环境配置

在hive安装目录下的hive-site.xml拷贝到SPARK_HOME/conf目录下建立hadoop/hive相关配置文件的软连接!

cd $SPARK_3_0_1_HOME/conf

ln -s /etc/hive/conf/hdfs-site.xml hdfs-site.xml

ln -s /etc/hive/conf/mapred-site.xml mapred-site.xml

ln -s /etc/hive/conf/yarn-site.xml yarn-site.xml

ln -s /etc/hive/conf/core-site.xml core-site.xml

ln -s /etc/hive/conf/hive-env.sh hive-env.sh

ln -s /etc/hive/conf/hive-site.xml hive-site.xml

ps:如果软连接没添加的话,很容易在连spark-shell指令或是执行spark-sql时,会一直出现连线的状态如下,目前我只添加在master 机上建置软连接:
这是执行spark-sql状态

2.增加spark配置

SPARK_HOME/conf目录下修改!spark-defaults.conf与spark-env.sh和log4j.properties配置。

2.1 spark-defaults.conf

SPARK_HOME/conf目录下修改!spark-defaults.conf可以复制既有spark-defaults.conf.template取代 。打开spark-defaults.conf 添加下面的配置。

# hive metastore版本设置为 2.1.1
spark.sql.hive.metastore.version=2.1.1
# 引用 HIVE在 cloudera/parcels相关的jar包
spark.sql.hive.metastore.jars=/opt/cloudera/parcels/CDH/lib/hive/lib/*
# 设置 spark提交任务默认的 yarn 队列
spark.yarn.queue=root.analysis
2.2 spark-env.sh

SPARK_HOME/conf目录下修改!spark-env.sh可以复制既有spark-env.sh.template取代 。打开spark-env.sh添加下面的配置。

# 添加 hadoop 配置文件的路径
export HADOOP_CONF_DIR=/etc/hadoop/conf
 # 添加 spark job history 相关参数 包括日志的 web ui的端口 / 缓存的spark作业日志数目 / 日志的hdfs路径
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://nameservice1/user/history/done_intermediate/spark3.0.1/eventlogs" 
2.3 log4j.properties

SPARK_HOME/conf目录下修改!log4j.properties可以复制既有log4j.properties.template取代 。如果有个别需求,自己添加。

2.4 分发 spark软件包

将配置好的spark软件包分发到 CDH 集群的其他节点上

#XXX01是传过去的主机位置, spark是最上层目录
scp -r spark root@XXX01:/opt/soft/.
2.5 执行spark-sql

SPARK_HOME/bin目录下,执行以下指令:

# 运行 spark-sql命令
/opt/soft/spark/bin/spark-sql --master yarn --name spark-sql-test

####### 2.5 .1执行spark-sql 发生的问题

出现Failed to load main class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.这是不能加载 org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver 这个类,添加spark-hive-thriftserver_版本号.jar

在这里插入图片描述
解决方式就是添加spark-hive-thriftserver_版本号.jar包到自己搭建spark中存放jar的目录里,我这边是放在/opt/soft/spark/jars这个文志。
我放的是spark-hive-thriftserver_2.12-3.0.0.jar版本


# 总结 提示:这里对文章进行总结: 发现在当时在安装spark-3.0.0-bin-hadoop3.2.tgz时候, 用方法1就可以解决,如果不能解决就用方法2
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值