安装Spark3之后Spark-SQL读不到之前安装好的Hive 数据库
安装Spark3之后Spark-SQL读不到之前安装好的Hive 数据库前言一、问题?二、解决方案方法1.引入hive-site.xml方法2.很多步骤 ><1.增加CDH环境配置2.增加spark配置2.1 spark-defaults.conf2.2 spark-env.sh2.3 log4j.properties2.4 分发 spark软件包2.5 执行spark-sql前言因为
安装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 机上建置软连接:
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
更多推荐
所有评论(0)