运行show databases报错FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
通过分析错误:可以得出SessionHiveMetaStoreClient是hive连接mysql存储元数据出现了问题。
所以我们需要检查元数据存储错误
原因大致有如下二点:
1、hive-site.xml文件中没有添加Mysql数据库的信息
<configuration>
<!-- hive元数据的存储位置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://linux123:3306/hivemetadata?
createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBC
metastore</description>
</property>
<!-- 指定驱动程序 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC
metastore</description>
</property>
<!-- 连接数据库的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore
database</description>
</property>
<!-- 连接数据库的口令 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore
database</description>
</property>
</configuration>
2、在hive配置文件中的mysql用户权限不足
需要给予权限。进入mysql命令行
执行以下语句
赋予权限
grant all privileges on *.* to 'hive'@'%' identified by '123456' with grant option;
刷新
flush privileges