Hive错误: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session

1. 今天在使用hive客户端时,执行查询语句报错如下:

FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException:
java.lang.RuntimeException: Unable to instantiate 
org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

Hive错误: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session_第1张图片

2. 原因分析:服务端未开启服务,在hive服务端使用命令:hive --service metastore &
再在客户端使用hive命令连接 (注意:客户端与服务端一般不在同一节点)
在这里插入图片描述

3. 网上其他解决方案:hive的数据库MySQL在安装的时候没有初始化
解决方案:初始化数据库,命令:schematool -dbType mysql -initSchema
Hive错误: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session_第2张图片

初始化时又遇到下面的错误

Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED!
Metastore state would be inconsistent !!
Underlying cause: java.io.IOException : Schema script failed, errorcode 2
Use --verbose for detailed st

Hive错误: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session_第3张图片
3. 原因分析:初始化的时候就会创建数据库hive,第一次初始化就已经生成,如果后面继续初始化还会继续执行这一步,但是执行到这时不能创建名字相同的数据库,就会报错以上错误信息,解决办法就是打开我们的mysql数据库,将这个hive数据库删除,继续初始化就可以成功了。

(1) 查看库名:show databases;
Hive错误: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session_第4张图片

(2) 删除数据库:drop database hive;
Hive错误: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session_第5张图片
(3) 重新执行初始化命令:schematool -dbType mysql -initSchema 即可成功
Hive错误: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session_第6张图片

4. 检查:在hive的lib下加入适合自己节点的mysql驱动
在这里插入图片描述

5. 在hive服务端使用命令:hive --service metastore &,客户端中使用hive连接,即可正常使用hive
Hive错误: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session_第7张图片

你可能感兴趣的:(hive,bug,hive)