【问题标题】:java.io.IOException:java.lang.ClassCastException: org.apache.hadoop.hbase.client.Result cannot be cast to org.apache.hadoop.io.Writablejava.io.IOException:java.lang.ClassCastException: org.apache.hadoop.hbase.client.Result 无法转换为 org.apache.hadoop.io.Writable
【发布时间】:2015-03-21 01:29:29
【问题描述】:

尝试了一个从 hive 处理 hbase 表的示例。

CREATE EXTERNAL TABLE 命令成功,但是 select 语句给出了类转换异常

环境: hive 0.12.0, hbase 0.96.1, hadoop 2.2, Ubuntu 12.04 on Virtual box

hive> SHOW TABLES;                                                                   
OK
hbatablese_myhive
Time taken: 0.309 seconds, Fetched: 1 row(s)
hive> SELECT * FROM hbatablese_myhive;
OK

**异常失败

java.io.IOException:java.lang.ClassCastException: org.apache.hadoop.hbase.client.Result cannot be cast to org.apache.hadoop.io.Writable**
Time taken: 1.179 seconds

hive> 

The same table on HBASE console:

hbase(main):002:0> scan 'myhive'
ROW                                   COLUMN+CELL                                                                                           



 row1                                 column=ratings:userid, timestamp=1392886585074, value=user1                                               
 row2                                 column=ratings:userid, timestamp=1392886606457, value=user2                                               
2 row(s) in 0.0520 seconds

【问题讨论】:

    标签: hadoop hive hbase


    【解决方案1】:

    TableRecordReaderImpl.java 的 next(Immutablebyteswritable key, Result value) 方法的旧版本中曾经有一个 Writables.copyWritable(Result result, Result value) 调用。

    copyWritable 现在已被删除,仅适用于可写、可写参数。

    现在要复制,您需要使用value.copyFrom(result)。这将对数据从源到目标进行深度复制

    我猜你有一些库不匹配导致这些调用发生并试图从 Result、Result 转换为 Writable、Writable

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 2023-02-02
      • 2016-06-30
      • 2016-01-14
      • 2013-07-25
      • 2016-07-05
      相关资源
      最近更新 更多