java.io.ioexception:java.lang.classcastexception:org.apache.hadoop.hbase.client.result不能强制转换为org.apache.hadoop.io.writable

6gpjuf90  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(409)

尝试了从配置单元处理hbase中的表的一个示例。
create external table命令成功,但select语句给出了类强制转换异常
env: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
nmpmafwu

nmpmafwu1#

以前有一个 Writables.copyWritable(Result result, Result value) 调用旧版本的 next(Immutablebyteswritable key, Result value) tablerecordreaderimpl.java的方法。
这个 copyWritable 现在已被删除,并且只适用于可写的、可写的参数。
现在要复制,你需要使用 value.copyFrom(result) . 这会将数据从源深度复制到目标
我猜你有一些库不匹配,这使这些调用发生,并试图从结果,结果到可写,可写

相关问题