2016-12-20 38 views
2

我使用JAVA API通過部分行鍵掃描Bigtable,向後和向前。此代碼的工作很好,但只能向前:Bigtable Scan.setReversed()在版本1.2.1中不起作用?

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版本,但我看到我的服務器端版本爲1.2 .1在Google Cloud Console中:

hbase(main):023:0>版本 1.2.1,r8d8a7107dc4ccbf3 6a92f64675dc60392f85c015,週三3月30日11點29分35秒CDT 2016

而且,我的客戶端JAR是BigTable中,HBase的-1.2-0.9.4.jar

我排鍵在下列方式格式化,作爲一個測試:
約翰* 1 * XXX
約翰* 2 * XXX
約翰* 3 * XXX

有沒有更好的方式來完成這件事嗎?

回答

2

不幸的是,Bigtable does not support reverse scanning。 HBase API大部分與Cloud Bigtable一致,但不是全部。你在Bigtable中發現了一個缺失的功能。

+0

感謝有用的職位。我從帖子中瞭解到協處理器也不支持。我有一個關於如何獲得返回掃描的行數的相關問題,這似乎涉及Coprocessor API在這裏:[http://stackoverflow.com/questions/41183912/aggregationclient-rowcount-in-bigtable-api-cant - 獲得,它到工作。我想我不能依靠那個嗎? –

相關問題