2016-10-11 35 views
0

如果我有一排按鍵,例如如何設置開始和結束行鍵HBASE

a_c 
b_c 
j_f 
f_d 
d_c 

我應該得到的所有行匹配_c。如何在這裏設置開始和停止行鍵。我試圖從掃描結果中取出開始和停止行鍵,而不是使用rowfilter或其他過濾器類型。

回答

0

如果您不想使用RowFilter,則可以編寫自己的過濾器功能。但我建議你使用PrefixFilter如果你不能寫自己的過濾功能,並且不希望使用RowFilter

例爲Java:

byte[] prefixF= Bytes.toBytes("_c"); 
Scan scan = new Scan(prefixF)); 
PrefixFilter prefixFilter = new PrefixFilter(prefixF); 
scan.addFilter(prefixFilter); 
ResultScanner resultScanner = table.getScanner(scan); 

上面的代碼等於hbase> scan 'YourTablename', { FILTER => "PrefixFilter('_c')"}

+0

謝謝爲你的答案。我不想使用任何自定義過濾器或甚至是rowfilter的原因是,所有這些都涉及全表掃描。這就是我試圖用啓動和停止行鍵來解決的原因。是否有可能獲得具有一些正則表達式的開始和停止行鍵的掃描結果? –

+0

使用掃描功能可以設置'starRow'和'stopRow':'掃描(byte [] startRow,byte [] stopRow)' 爲指定的行範圍創建掃描操作。 它還允許你設置'startRow'和'filter',你應該使用[Filter](https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/Filter.html)class hbase:'Scan(byte [] startRow,Filter filter)'。我認爲可以用'startRow'和'stopRow'創建一個函數,並且在函數內部,你應該使用正則表達式(Pattern,Match來過濾結果,如果你找到另一個解決方案,請告訴我:) –

相關問題