2014-11-06 65 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