Hive啟動后,執行SQL報如下的錯:
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
根據提示:無法啟動元數據服務。
方向一:嘗試重新初始化元數據(該方法無效,看方向二)
1.刪除mysql中的matestore庫:
mysql -uroot -p123456 drop database matestore; create database matestore;
2.執行初始化命令:
schematool -initSchema -dbType mysql -verbose
初始化成功。
3.嘗試在hive客戶端使用SQL看是否報錯:
bin/hive show databses;
結果:依然報錯,報同樣的錯。
分析:初始化成功了,檢查hive-site.xml也沒有問題。根據報錯,是元數據服務沒有啟動,嘗試手動啟動該服務。
方向二:手動啟動hive的元數據服務:
hive --service metastore
hive客戶端嘗試SQL語句,可以使用,已解決。
另:hiveserver2啟動命令,用於jdbc連接:
bin/hive --service hiveserver2
注:matestore服務需要在hive-site.xml文件中做如下配置:
<!-- 指定存儲元數據要連接的地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop102:9083</value> </property>
注:hiveserver2服務需要在hive-site.xml文件中做如下配置:
<!-- 指定hiveserver2連接的host --> <property> <name>hive.server2.thrift.bind.host</name> <value>hadoop102</value> </property> <!-- 指定hiveserver2連接的端口號 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property>