HBase 获取扫描程序异常 - "This is supposed to be overridden by subclasses"



我正在尝试运行以下代码:

Cluster cluster = new Cluster();
cluster.add("localhost", port_number);
Client client = new Client(cluster);
RemoteHTable table = new RemoteHTable(client, "my_table");
Scan scan = new Scan();
scan.setStartRow(startKey);
scan.setStopRow(endKey);
scan.addFamily(columnFamily);
ResultScanner scanner = table.getScanner(scan);

但最后一行抛出:

线程"main"java.lang.UnsupportedOperationException中的异常:这应该被子类覆盖。    at com.google.protobuf.GeneratedMessage.getUnknownFields(Generated Message.java:180)    at org.apache.hadoop.hbase.rest.protobuf.generated.ScannerMessage$Scanner.getSerializedSize(ScannerMessage.java:274)    at com.google.protobuf.AbstractMessageLite.toByteArray(AbstractMessageLite.java:62)    at org.apache.hadoop.hbase.rest.model.ScannerModel.createProtobufOutput(ScannerModel.java:705)    at org.apache.hadoop.hbase.rest.client.RemoteHTable$Scanner.(远程HTable.java:510)    at org.apache.hadoop.hbase.rest.client.RemoteHTable.getScanner(RemoteHTable.java:620)    at com.amazon.cq.banyan.hbase.example.HBaseRestClient.main(HBaseRestClient.java:55)

这是我的绒球.xml:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase</artifactId>
    <version>0.94.18</version>
</dependency>

尝试进行看跌时也会发生这种情况。

这是由于使用了不同版本的protobuf罐。 此链接将帮助您了解问题https://code.google.com/p/protobuf/issues/detail?id=493

Protobuf 2.5 要求生成的 protobuf

类是使用 2.5 protobuf 编译器生成的。我相信此错误表明您正在将 2.5 protobuf 库与早期 protobuf 版本生成的代码混合在一起。

我认为您遇到了此处描述的相同错误:https://issues.apache.org/jira/browse/HADOOP-9845

要修复此错误,您需要确保生成的代码与 protobuf 库版本匹配。这可能需要升级Hadoop或任何其他包含protobuf生成代码的库。

最新更新