hive与hbase的兼容性问题

本文深入探讨了Hive命令行查询表时遇到的错误信息,涉及HBase版本0.96.0与Hive版本0.12.0之间的不兼容性问题。解释了错误原因及当前解决方案的局限性。

Hive命令行查询表时的错误信息:(hbase-0.98.X)(hive-0.12.0)
Failed with exception java.io.IOException:java.lang.ClassCastException: org.apache.hadoop.hbase.client.Result cannot be cast to org.apache.hadoop.io.Writable

Hive日志中报错信息:
java.io.IOException: java.lang.ClassCastException: org.apache.hadoop.hbase.client.Result cannot be cast to org.apache.hadoop.io.Writable
at org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:551)
at org.apache.hadoop.hive.ql.exec.FetchOperator.pushRow(FetchOperator.java:489)
……
报错原因:
Hbase0.64.6        public class Result extends Object implements org.apache.hadoop.io.Writable, WritableWithSize
Hbase0.96.0        public class Result extends Object implements CellScannable
Hbase到了0.96.0之后就不再实现接口Writable了
解决方法:
暂时没有解决方法,因为hive-0.12.0和hbase-0.96.0是不兼容的,hive-hbase-handle-0.12.0.jar不兼容hbase0.96.0,hive0.12.0还停留在hadoop1.0的基础上。
hive-0.12.0和hbase0.94.X是兼容的,可是hadoop2.2.0和0.94.X又不兼容。

### HiveHBase的兼容性及集成方法 #### 兼容性问题 HiveHBase的集成存在一定的版本依赖关系以及功能上的限制。从Hive 0.9.0开始,HBase集成至少需要HBase 0.92版本的支持[^4]。这意味着如果使用的HBase版本低于此标准,则可能无法正常运行两者的集成操作。此外,在实际应用过程中,还需要注意不同版本间的潜在不兼容情况,这些都需要通过严格的测试加以确认[^3]。 #### 集成方法概述 HiveHBase之间的数据交互主要依靠`hive-hbase-handler-*.jar`这一工具包来完成。该JAR文件位于Hive安装路径下的lib目录中,并负责处理所有针对HBase的数据访问请求[^5]。这种设计使得开发者能够方便地利用SQL语句查询存储于HBase中的半结构化或者非结构化的海量数据集。 对于具体的集成配置而言,通常涉及以下几个方面: 1. **环境准备** - 确保所选Hadoop集群上已正确部署并启动了HBase服务实例。 - 下载对应版本号匹配好的hive-hbase-handler库至本地机器,并将其加入到classpath当中去以便后续加载使用。 2. **表定义映射** 创建一张新的外部表格时需指定storage handler属性为org.apache.hadoop.hive.hbase.HBaseStorageHandler同时附加其他必要的参数描述如何关联目标hbase table的信息比如rowkey列名等等[^2]。 下面给出一段创建连接HBase表的例子代码如下所示: ```sql CREATE EXTERNAL 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" = "my_hbase_table"); ``` 上述脚本片段展示了怎样把现有的HBase表映射成为可供Hive引擎执行分析任务的对象形式之一。 另外值得注意的是尽管当前技术已经允许我们轻松实现二者间紧密耦合但仍有一些地方值得改进例如整体解决方案性能有待提升用户体验不够友好等问题亟待解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值