0

我在 HBase 表中有 20 行,并且 rowkey 是从 1 到 20 的长格式。我想从中查询 rowkey 以 1 开头的记录。我试过了PrefixFilterBinaryPrefixComparator但只有当 rowkey 是在字符串 fromat 中。如果它很长,则查询返回所有记录。我怎样才能做到这一点?

过滤器表达式

Scan scan=new Scan();
Filter rowFilter=new RowFilter(CompareOp.EQUAL, new BinaryPrefixComparator(Bytes.toBytes("1")));
//Filter rowFilter=new RowFilter(CompareOp.NOT_EQUAL, new BinaryPrefixComparator(Bytes.toBytes("1")));
scan.setFilter(rowFilter);
ResultScanner resultscanner=htable.getScanner(scan);
4

1 回答 1

1

如果行键是long,则必须在查询中引用它们long而不是字符串。
即:而不是Bytes.toBytes("1")使用Bytes.toBytes(1L).

您可以设置要扫描的范围:

scan.setStartRow(Bytes.toBytes(1L));
scan.setStopRow(Bytes.toBytes(21L));  //since stopRow is exclusive
于 2012-11-24T22:08:08.400 回答