解决Hive运行hql提示Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

本文解决了一个Hive在运行show databases时出现的错误:无法实例化SessionHiveMetaStoreClient。真实原因是Hive的模式版本与元数据存储的版本不符。通过更新MySQL中hive数据库的VERSION表中的SCHEMA_VERSION字段,将版本号改为2.3.0,成功解决了问题。

遇到的问题

Hive在运行show databases时,报了如下错误:
Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

直接把错误原因复制到百度和google搜出来的解决方案都没有解决问题,后来查看hive日志,发现真实错误其实是:
Caused by: org.apache.hadoop.hive.metastore.api.MetaException: Hive Schema version 2.3.0 does not match metastore’s schema version 1.2.0 Metastore is not upgraded or corrupt

解决方法

连接mysql,选择hive数据库,修改VERSION表中的SCHEMA_VERSION为2.3.0,问题就解决了。
代码:

mysql:mysql -uroot -p (123456)
use hive;
select * from version;
update VERSION set SCHEMA_VERSION='2.3.0' where  VER_ID=1;

这里用的是一位大佬的方法,链接:https://blog.csdn.net/qq_27882063/article/details/79886935

总结

在遇到问题的时候,很多时候控制台只是显示了什么错误,并没有告诉你是由什么引起的,所以应该查看日志。

查看日志的方法

进入hive的conf目录
查看hive-log4j2.properties文件,发现日志的输出目录如下:
在这里插入图片描述
我这里默认的就是/tmp/root下的hive.log,查看即可
在这里插入图片描述使用其它东西的套路也是一样的,就是查看配置文件,看它的日志目录是在哪里,再查看即可。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值