【问题标题】:hive-HBase ClassNotFound happend when do mapreduce job执行 mapreduce 作业时发生 hive-HBase ClassNotFound
【发布时间】:2014-11-06 08:59:52
【问题描述】:

我有一个 hive+hbase 集成集群。 我通过以下方式创建了一个表: CREATE TABLE hbase_table_1(key int, value string) 由“org.apache.hadoop.hive.hbase.HBaseStorageHandler”存储 WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz");

执行时没问题: 从 hbase_table_1 中选择 *;

但是当我执行count操作时,会发生classnotfound错误。 从 hbase_table_1 中选择 count(*);

错误信息是: java.io.IOException:找不到类 在 org.apache ......HiveInputformat.getRecordReader(HiveInputFormat.java:220) ............ 引起:java.lang.ClassNoteFoundException: 在 java.lang.Class.forName0(本机方法)

那些错误信息没有通知我是哪个类。

对不起,我的英语不好。

有人遇到过这个问题吗?

【问题讨论】:

  • 我手写错误信息。由于权限,我无法从集群机器复制它。

标签: hive hbase


【解决方案1】:
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 存储处理程序在 hive 中创建表。

【讨论】:

  • @Suthar 谢谢。它解决了我的问题。有什么方法不需要重启hbase和hadoop?因为在生产环境中。
  • 那就不要执行第 2 步和第 3 步。可能会解决您的问题
猜你喜欢
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多