HBase (または、HBase とやり取りするために使用する HappyBase) でフィルターがどのように機能するかについて、私は混乱しています。私の混乱の原因は、フィルターが何をするかを理解できないように見えることです。
のような一部のフィルターでSingleColumnValueFilter
は、列の 1 つの値に基づいて行が出力されません。これは理にかなっています-私の考えでは、これがフィルターの目的です。ただし、 などの他のフィルタFirstKeyOnlyFilter
は、行単位でフィルタリングするのではなく、リクエスタに表示されるデータをフィルタリングするように見えます。つまり、引数のように列単位でフィルタリングしcolumns
ます。これだけでなく、他のフィルターがデータにアクセスできるかどうかにも影響を与えるようです。
おそらく私はそれらを間違って使用しています。しかし、私にとっては、「フィルター」は、「身長 7 フィートを超えるすべての人を見つけてください!」のように、プロパティで動作する出力に基づいてアイテムを削除する必要があります。しかし、FirstKeyOnlyFilter
少なくとも HBase での の動作は、「Ear を離れた全員を連れてきて、他には何もない!」に似ているようです。さらに、次のようなフィルターがある場合:
SingleColumnValueFilter('body', 'height', =, 'regexstring:^over7ft$') AND FirstKeyOnlyFilter
、FirstKeyOnlyFilter
最初のフィルターが列 family:column "body:height" にアクセスすることを制限しているように見えます。
このデザインの選択は何ですか?上のフィルターは、「正確に身長 7 フィートの全員の名前を教えてください!」と言っているように見えます。代わりに、「名前の高さが 7 フィートの場合は、すべての名前を明るくしてください!」のようなことを言っています。名前に「高さ」があると言えるのと同様に、行の最初のキーには列がありません。
私は何を間違っていますか?これは HappyBase の特性ですか、それとも HBase 本体でも同じですか?