我正在使用 JAVA API 通过部分行键向后和向前扫描 Bigtable。这段代码运行良好,但只能转发:
Scan s = new Scan();
s.setReversed(true);
s.setStartRow(rowKey);
s.setStopRow(rowKeyEnd);
ResultScanner scanner = tbl.getScanner(s);
for (Result row : scanner)
{
String rk = new String(row.getRow());
System.out.println("Row: " + rk);
}
似乎行
.setReversed(true);
本身没有任何影响,无论我是在设置开始和结束行键之前还是之后设置它。如果我在 .setStartRow()
和 .setStopRow()
中切换开始行和结束行键,那么我会在迭代代码中出现异常 (Result row : scanner)
:据我从这个讨论中了解到的在HBase中反向扫描时,哪个是startKey,哪个是stopKey?,反向扫描在0.98以下的版本中不起作用,但我看到我的服务器端版本为1.2。 Google Cloud Console 中的 1:
hbase(主):023:0>版本 1.2.1,r8d8a7107dc4ccbf36a92f64675dc60392f85c015,2016 年 3 月 30 日星期三 11:29:35 CDT
另外,我的客户端 JAR 是 bigtable-hbase-1.2-0.9.4.jar
我的行键按照以下方式格式化,作为测试:
约翰*1*XXX
约翰*2*XXX
约翰*3*XXX
请问有更好的方法吗?
不幸的是,Bigtable不支持反向扫描。 HBase API 大部分与 Cloud Bigtable 一致,但并非全部一致。您发现了 Bigtable 中缺失的功能之一。
反向扫描现在可在预览中使用。