问题一:
刚配置完mysql作为hive的元数据库,成功启动hive后,执行命令show databases;
报错。
hive> show databases;
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
解决办法:
启动元数据服务:
hive --service metastore
再次执行 show databases;成功!
hive> show databases;
OK
default
Time taken: 0.03 seconds, Fetched: 1 row(s)
检查错误步骤:
1. 确保mysql数据库中存在自己配置的元数据数据库(hive-site.xml中的数据库名称一定要存在,不存在自己创建一个)。
2. 确保mysql的驱动包在/hive/lib目录下。
3. 确保mysql的用户名和密码和hive-site.xml中的配置项一致。
4.启动hive的元数据服务:hive --service metastore
问题二:
hive 执行删除 数据库表的时候报错:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Exception thrown when executing query : SELECT DISTINCT 'org.apache.hadoop.hive.metastore.model.MPartition' AS `NUCLEUS_TYPE`,`A0`.`CREATE_TIME`,`A0`.`LAST_ACCESS_TIME`,`A0`.`PART_NAME`,`A0`.`PART_ID`,`A0`.`PART_NAME` AS `NUCORDER0` FROM `PARTITIONS` `A0` LEFT OUTER JOIN `TBLS` `B0` ON `A0`.`TBL_ID` = `B0`.`TBL_ID` LEFT OUTER JOIN `DBS` `C0` ON `B0`.`DB_ID` = `C0`.`DB_ID` WHERE `B0`.`TBL_NAME` = ? AND `C0`.`NAME` = ? ORDER BY `NUCORDER0` LIMIT 0,300 )
hive> select*from student;
OK
1000 ss
1001 ss2
Time taken: 1.502 seconds, Fetched: 2 row(s)
hive> drop table student;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Exception thrown when executing query : SELECT DISTINCT 'org.apache.hadoop.hive.metastore.model.MPartition' AS `NUCLEUS_TYPE`,`A0`.`CREATE_TIME`,`A0`.`LAST_ACCESS_TIME`,`A0`.`PART_NAME`,`A0`.`PART_ID`,`A0`.`PART_NAME` AS `NUCORDER0` FROM `PARTITIONS` `A0` LEFT OUTER JOIN `TBLS` `B0` ON `A0`.`TBL_ID` = `B0`.`TBL_ID` LEFT OUTER JOIN `DBS` `C0` ON `B0`.`DB_ID` = `C0`.`DB_ID` WHERE `B0`.`TBL_NAME` = ? AND `C0`.`NAME` = ? ORDER BY `NUCORDER0` LIMIT 0,300 )
解决办法:
这个错误一般是 mysql驱动包的问题,将mysql-connector-java换成新的版本即可解决。