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

问题描述 投票:0回答:2

我正在使用 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

据我从这个讨论中了解到的在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

请问有更好的方法吗?

google-cloud-bigtable
2个回答
4
投票

不幸的是,Bigtable不支持反向扫描。 HBase API 大部分与 Cloud Bigtable 一致,但并非全部一致。您发现了 Bigtable 中缺失的功能之一。


0
投票

反向扫描现在可在预览中使用。

© www.soinside.com 2019 - 2024. All rights reserved.