java.io.IOException:java.lang.ClassCastException:org.apache.hadoop.hbase.client.Result无法强制转换为org.apache.hadoop.io.Writable

java.io.IOException:java.lang.ClassCastException:org.apache.hadoop.hbase.client.Result无法强制转换为org.apache.hadoop.io.Writable,hadoop,hive,hbase,Hadoop,Hive,Hbase,尝试了从hive处理hbase中的表的一个示例 CREATE EXTERNAL TABLE命令成功,但select语句给出了类强制转换异常 环境: 虚拟机上的hive 0.12.0、hbase 0.96.1、hadoop 2.2、Ubuntu 12.04 hive> SHOW TABLES; OK hbatablese_myhive Time taken:

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

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

环境: 虚拟机上的hive 0.12.0、hbase 0.96.1、hadoop 2.2、Ubuntu 12.04

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

以前有一个
Writables.copyWritable(Result,Result value)
调用TableRecordReaderImpl.java的
next(Immutablebyteswritable键,Result value)
方法的旧版本

copywriteable
现在已被删除,并且仅适用于可写、可写的参数

要立即进行复制,需要使用
value.copyFrom(结果)
。这将执行从源到目标的数据深度复制

我猜您有一些库不匹配,这使得这些调用发生,并试图从Result、Result转换为可写、可写