現在的情況是執行hive沒有出錯,但是執行命令出錯
$ pwd
/home/hadoop
$ hive
hive> show tables;
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
hive> exit;
解決方法:
首先我們去 hive-site.xml 設置Derby數據庫的位置:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:derby:/usr/local/hive/metastore_db;databaseName=metastore_db;create=true</value> </property>
我們刪除原來的metadb schema,再重新初始化
$ rm -rf $HIVE_HOME/metastore_db $ cd $HIVE_HOME $ schematool -initSchema -dbType derby ... Initialization script completed schemaTool completed
現在hive正常工作了:
$ cd $ hive hive> show tables; OK Time taken: 0.803 seconds
重點:
我發現下次再進hive或者換個終端進hive又會報同樣的錯,不得不刪掉重新初始化,這樣之前的數據全沒了,這誰頂得住啊!
其實出錯的原因:derby數據庫限制只能有一個連接
不知道是上一個連接沒有關閉、還是沒有正常關閉,我們只需刪掉/usr/local/hive/metastore_db/dbex.lck文件即可
雖然這樣每次執行hsq前都要這樣,但總比刪除數據好點
如果不行,試試kill掉RunJar進程
ps -ef | grep RunJar
參考鏈接:
3. https://blog.csdn.net/u010886217/article/details/86501199