10

prefixfilter を使用してクエリを実行すると、なぜ非常に遅いのかわかりません。HBase を照会する最良の方法を誰かが説明してくれませんか。ありがとうございます。

hbase(main):002:0> scan 'userlib',{FILTER=>org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes('0000115831F8'))}
ROW               COLUMN+CELL                                                                                                                                
0000115831F8001   column=track:aid, timestamp=1339121507633, value=aaa                                                                                       
1 row(s) in 41.0700 seconds

hbase(main):002:0> scan 'userlib',{STARTROW=>'0000115831F8',ENDROW=>'0000115831F9'}                                                                                        
ROW               COLUMN+CELL                                                                                                                                
0000115831F8001   column=track:aid, timestamp=1339121507633, value=aaa                                                                                       
1 row(s) in 0.1100 seconds
4

2 に答える 2

23

ほとんどの場合、これらは完全なテーブル スキャンを実行し、それらの結果をフィルタリングするため、HBase フィルター (行フィルターでさえも) は非常に低速です。この議論を見てください:http://grokbase.com/p/hbase/user/115cg0d7jh/very-slow-scan-performance-using-filters

ただし、行キーの範囲スキャンは実際にははるかに高速です。フィルター処理されたテーブル スキャンと同等の処理を行います。これは、行キーがソートされた順序で格納されるため (これは、BigTable のようなソリューションである HBase の基本的な保証の 1 つです)、行キーの範囲スキャンが非常に高速であるためです。詳細はこちら: http://www.quora.com/How-feasible-is-real-time-querying-on-HBase-Can-it-be-achieved-through-a-programming-language- such-as- Python-PHP-または-JSP

[UPDATE 1] PrefixFilter は、フィルターで使用されるプレフィックスを渡すまで (見つかった場合)、完全なテーブル スキャンを実行することがわかりました。PrefixFilter を使用した高速パフォーマンスの推奨事項は、PrefixFilterに加えてstart_row パラメータを指定することです。hbase-user メーリング リストで関連する 2013 年の議論を参照してください。

[更新 2、@aaa90210 から] 上記の更新に関して、PrefixFilter よりもはるかに高速な効率的な行プレフィックス フィルターが追加されました

于 2012-06-08T19:31:56.297 に答える
0

日付: PrefixFilter は、フィルターで使用されているプレフィックスを渡すまで (見つかった場合)、完全なテーブル スキャンを実行することがわかりました。PrefixFilter を使用した高速パフォーマンスの推奨事項は、PrefixF に加えて start_row パラメータを指定することです。

于 2016-06-02T14:13:19.877 に答える