2014-11-06 38 views
1

我有一個hive + hbase集成集羣。 我創建了一個表: CREATE TABLE hbase_table_1(key int,value string) STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES(「hbase.columns.mapping」=「:key, cf1:val「) TBLPROPERTIES(」hbase.table.name「=」xyz「);hive-HBase ClassNotFound發生在做mapreduce工作時

執行時可以: select * from hbase_table_1;

但是當我執行計數操作時,將發生classnotfound錯誤。 從hbase_table_1中選擇計數(*);

錯誤信息是: 產生java.io.IOException:在org.apache ............. HiveInputformat.getRecordReader(HiveInputFormat.java:220) 找不到 類... ........ 導致:java.lang.ClassNoteFoundException: 在java.lang.Class.forName0(本地方法)

這些錯誤消息不會通知我哪個類。

對不起,我英文很差。

任何人遇到此問題?

+0

我手寫錯誤信息。因爲權限,我無法從羣集機器複製它。 – 2014-11-06 09:01:43

回答

0
1) COPY THESE FILES TO THE HADOOP LIBRARY. 

    sudo cp /usr/lib/hive/lib/hive-common-0.7.0-cdh3u0.jar /usr/lib/hadoop/lib/ 

    sudo cp /usr/lib/hive/lib/hbase-0.90.1-cdh3u0.jar /usr/lib/hadoop/lib/ 

    sudo cp /usr/lib/hive/lib/hbase-0.90.1-cdh3u0.jar /usr/lib/hadoop/lib/ 



    2)CLOSE HBASE AND HADOOP USING FOLLOWING COMMOND 

    /usr/lib/hadoop/bin/stop-all.sh 
    /usr/lib/hbase/bin/stop-hbase.sh 

3) RESTART HBASE AND HADOOP USING COMMOND 
/usr/lib/hadoop/bin/start-all.sh 
/usr/lib/hadoop/bin/start-hbase.sh 

現在使用Hbase存儲處理程序在配置單元中創建表。

+0

@Suthar謝謝。它解決了我的問題。有什麼辦法不需要重啓hbase和hadoop?因爲在生產環境中。 – 2014-11-06 09:33:08

+0

然後不要執行2和3步驟。可以解決你的問題 – 2014-11-06 09:42:57

+0

我嘗試它,但失敗。 – 2014-11-06 09:54:30

相關問題