簡體   English   中英

HBase (Easy):如何在 hbase shell 中執行范圍前綴掃描

[英]HBase (Easy): How to Perform Range Prefix Scan in hbase shell

我正在設計一個在 hbase 上運行的應用程序,並希望以交互方式探索我的集群的內容。 我在 hbase shell 中,我想掃描所有以字符“abc”開頭的鍵。 這些鍵可能包括“abc4”、“abc92”、“abc20014”等......我嘗試了掃描

hbase(main):003:0> scan 'mytable', {STARTROW => 'abc', ENDROW => 'abc'}

但這似乎沒有返回任何內容,因為技術上沒有行鍵“abc”,只有以“abc”開頭的行鍵

我想要的是類似的東西

hbase(main):003:0> scan 'mytable', {STARTSROWPREFIX => 'abc', ENDROWPREFIX => 'abc'}

我聽說 HBase 可以快速做到這一點,這是它的主要賣點之一。 我如何在 hbase shell 中執行此操作?

所以這很容易。 掃描范圍不包括在內,邏輯是 start <= key < end。 所以答案是

scan 'mytable', {STARTROW => 'abc', ENDROW => 'abd'}

在最新版本的 HBase 中,您現在可以在 hbase shell 中執行以下操作:

scan 'mytable', {ROWPREFIXFILTER => 'abc'}

這有效地做到了這一點(也適用於二元情況)

scan 'mytable', {STARTROW => 'abc', ENDROW => 'abd'}

這種方法比“PrefixFilter”方法效率高很多,因為后者將所有記錄放在此 PrefixFilter 類中存在的比較代碼中。

接受的解決方案不適用於所有情況(二進制密鑰)。 此外,使用 PrefixFilter 可能會很慢,因為它會執行表掃描,直到到達前綴為止。 更高效的解決方案是使用 STARTROW 和 FILTER ,如下所示:

 scan 'my_table', {STARTROW => 'abc', FILTER => "PrefixFilter('abc')"}

我想你需要的是一個過濾器

檢查以下問題的答案使用 HBase shell 使用過濾器掃描

更多過濾器列在http://hbase.apache.org/book/client.filter.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM