错误消息:“偏移量(0)+长度(4)超出阵列容量:2”从HBase获取数据时

时间:2015-03-04 05:47:29

标签: hadoop hbase

由于上述错误,我的基于tomcat的REST API应用程序无法处理请求。我在尝试从HBase检索数据时遇到错误。我使用RESTFul webservices作为我的界面。

我正在使用包含HBase 0.98.6的CDH 5.3.1。有谁知道如何解决这个问题?enter code here

错误详细信息: 错误消息:“offset(0)+ length(4)超出了数组的容量:2”

3 个答案:

答案 0 :(得分:2)

也许您需要更改一些架构类型规范?

我收到此错误,offset (0) + length (4) exceed the capacity of the array: 1除外。这是因为缺少相关列的值,我假设1字节表示空值。

在Java中使用spark到hbase连接器并将列类型指定为" int",例如:

时发生这种情况。

{" cf":" fam"," col":" someColumn"," type":& #34; INT"}

将类型更改为" string"解决了问题,缺少值显示为null而不是导致错误。

答案 1 :(得分:0)

同样的问题。对我来说,根本原因是生成/消费的数据不是通过相同的API。

我使用python rest API生成测试数据,检索时只有7个字节长,不符合消费者的要求(8个字节)

在您的情况下,您的生产者只生成2个字节长,而消费者期望4个字节。

你必须适应两端。

答案 2 :(得分:0)

我遇到了同样的错误.offset(0)+ length(4)超出了数组的容量:3。

因为在HBase上,类型是String,但是我的类中的实体是Integer.So,字节不能转换。 你必须确保从HBase获得的类型是相同的。

例如: HBase - > productId:s_23476

实体 - > private Integer productId