由于上述错误,我的基于tomcat的REST API应用程序无法处理请求。我在尝试从HBase检索数据时遇到错误。我使用RESTFul webservices作为我的界面。
我正在使用包含HBase 0.98.6的CDH 5.3.1。有谁知道如何解决这个问题?enter code here
错误详细信息: 错误消息:“offset(0)+ length(4)超出了数组的容量:2”
答案 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