Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

hive初始化(mysql为元数据库)完成后,执行SQL语句报错

经过各种查询资料,找到了一种解决办法,大家可以参考。

首先进入hive/bin目录下

执行命令   ./hive --service metastore &

如图:

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient_第1张图片

然后执行命令  ./hive

成功进入hive数据库

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient_第2张图片

在这里简单介绍一下hive的metastore

1. 概述
通过hive metastore能访问hive的元数据,hive的元数据使用Data Nucleus持久化,因此mysql等数据库可以和hive结合,存储元数据。

2. metastore的两种方式
配置metastore服务端以及metastore数据库主要有内嵌、远程两种方式。
2.1 内嵌方式
hive使用derby作为内嵌的metastore数据库,主要用于测试,但是在同一时间,它只允许一个进程连接metastore数据库。
注意确认数据库能被执行查询的机器访问到,jdbc库放到hive客户端的classpath下。
2.2 远程方式(我使用的方式)
远程metastore服务端和客户端之间使用Thrift协议通信。执行hive --service metastore 启动Thrift服务端。

(所以我在初始化之后没有启动Thrift服务端,直接执行SQL语句就会报错)
如果使用mysql,需要在启动hive客户端和HiveMetastore服务端之前把jar包放到HIVE_HOME/lib目录。
远程metastore服务端和客户端都需要设置hive.metastore.warehouse.dir参数为HDFS路径,此外服务端需要设置ConnectionURL等参数,客户端需要设置hive.metastore.uris参数。

相关文章:

Hive 学习笔记(启动方式,内置服务)

你可能感兴趣的:(hive)