我正在尝试运行以下代码:
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);
但最后一行是:
Exception in thread "main" java.lang.UnsupportedOperationException: This is supposed to be overridden by subclasses.
at com.google.protobuf.GeneratedMessage.getUnknownFields(GeneratedMessage.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.(RemoteHTable.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)
这是我的pom.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>
这种情况也发生在尝试做看跌期权的时候。
2条答案
按热度按时间kqqjbcuj1#
这是因为使用了不同版本的protobufjar。此链接将帮助您了解问题https://code.google.com/p/protobuf/issues/detail?id=493
anauzrmj2#
protobuf2.5要求生成的protobuf类是用2.5protobuf编译器生成的。我相信这个错误表明您将2.5protobuf库与从早期protobuf版本生成的代码混合在一起。
我认为您遇到了这里描述的相同错误:https://issues.apache.org/jira/browse/hadoop-9845
要修复这个bug,您需要确保生成的代码与protobuf库版本匹配。这可能需要升级hadoop或任何其他包含protobuf生成代码的库。