hbase的查詢Scan功能(setStartRow, setStopRow)
阿新 • • 發佈:2019-01-23
http://f.dataguru.cn/thread-243074-1-1.html
取出5193:---5194:中的元素(5193開頭的元素),也就是(程式所使用的查詢方式)
5193:1
5193:2
但是,其實很容易被誤取了,實際查詢得到的結果如下:
5193:1
5193:2
51942:1
原因是:與hbase內的scan的方式有關,hbase會將自己的元素按照key的ASCII碼排序,
其實也就是說,我們會看見排列的方式如下:
51939:1
5193:1
5193:2
51942:1
5194:1
如果hbase使用這種查詢方式,是實際工作中,因為id都比較長,其實發生的概率比較小,是一種偶現問題。
取出5193:開頭的元素相對比較取巧的寫法:
scan.setStartRow("5193:/");
scan.setStopRow("5193::");
ResultScanner result = table.getScanner(scan);
for (Result r : result) {
get it......
}
原因:ASCII排序中:
"/" < "0-9" < ":"其中,在上述演算法中 “/” 也可以用 “#” 代替,因為:
"#" < "0-9" < ":"
取出來的將是5193:後面跟著數字的元素
(出處: 煉數成金)
取出來的將是5193:後面跟著數字的元素