Bigtable Scan.setReversed()在版本1.2.1中不起作用?

时间:2016-12-20 11:35:00

标签: google-cloud-bigtable

我正在使用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)中得到一个例外:
引起:com.google.bigtable.repackaged.io.grpc.StatusRuntimeException:INVALID_ARGUMENT:字段'row_ranges'出错:元素#0出错:start_key必须小于end_key

据我所知when reversing a Scan in HBase, which is the startKey and which is the stopKey?,反向扫描在0.98以下的版本中不起作用,但我在Google云端控制台中看到我的服务器端版本为1.2.1:

HBase的(主):023:0>版 1.2.1,r8d8a7107dc4ccbf36a92f64675dc60392f85c015,Wed Mar 30 11:29:35 CDT 2016

另外,我的客户端JAR是bigtable-hbase-1.2-0.9.4.jar

我的行键按以下方式格式化,作为测试:
约翰* 1 * XXX
约翰* 2 * XXX
约翰* 3 * XXX

有没有更好的方法来完成这项工作?

1 个答案:

答案 0 :(得分:2)

不幸的是,Bigtable does not support reverse scanning。 HBase API主要与Cloud Bigtable对齐,但不是全部。您在Bigtable中找到了一个缺少的功能。