解决sparkSQL连接hive时出现的问题:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;
本地IDEA写sparkSQL连接hive,集群没有spark
相信你已经看过其他同样解决相同问题的博客,如果没有解决,可以试试本文解决的方法
问题翻译过来就是: 无法实例化 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;
组件配置说明:
组件 | 版本号 |
---|---|
hadoop | 3.1.3 |
hive | 3.1.2 |
spark | 3.0.0 |
win | 10 |
(如果与你相同,很幸运可以减少你探索是否是版本的问题)
还有个说明:我的集群是没有装spark的,我是在win的IDEA里的maven使用了spark 3.0.0,有一个本地模式
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("sparkSQL")
我的pom.xml,文件:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.12</artifactId>
# spark-hive_ 的后面是Scala版本,有些博客说会是Scala版本不一致问题,可以留意一下其他博客
# 注意:复制进去的时候,要把这段话删掉
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>3.1.2</version>
</dependency>
无法实例化,有可能是原数据的问题,我看了其他的博客,需要开启原数据服务
在hive下面的bin目录,输入:
hive --service metastore
我试了还是不行,后面我去看了hive-site.xml文件配置,还需要开启一个参数
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop202:9083</value>
</property>
# hadoop202是我那台虚拟机的名字,记得修改你的主机名
# 不要把这段话复制进去
应该就可以了,还需要说明的是:开启原数据服务还是需要的,我试了没开,还是会有报错。
OK