5

hbase シェル コマンド ラインから修飾子フィルターまたは ValueFilter を実行する方法を教えてください。

4

3 に答える 3

9

これは、プログラミング言語でコーディングする方法と非常によく似ています。たとえば、次のようになります。

import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.util.Bytes
scan 'tableName', {COLUMNS=>['CF:qualifier1', 'CF:qualifier2'], LIMIT=>10,
FILTER=>SingleColumnValueFilter.new(Bytes.toBytes('CF'),
Bytes.toBytes('qualifier1'), CompareFilter::CompareOp.valueOf('EQUAL'),
Bytes.toBytes('value'))}

使用するフィッターに応じて、明らかにパラメーターを変更する必要があります。

于 2012-09-28T16:12:17.433 に答える
7

Java で行うのと同じ方法で (JRuby 構文を使用して) 任意のフィルターをインスタンス化し、フィルターを次のように指定できます。

filter = ...
scan 'mytable', FILTER => filter

ただし、シェルでフィルターを直接インスタンス化するのは面倒な場合があるため、フィルター言語を使用してフィルターを文字列として提供するのが簡単な方法です。たとえば、値が「myvalue」に等しいすべての列をスキャンに含めるには、次のようにします。

scan 'mytable', FILTER => "ValueFilter(=, 'binary:myvalue')"

このドキュメントは、「フィルター言語」リファレンスとして確認できます。

(二重引用符を閉じるための編集)

于 2013-05-12T15:27:48.870 に答える
5

さらに、特定の列で部分文字列をスキャンするには、次のようにします。

scan 'myTable', { COLUMNS => 'cf:abc', FILTER => "ValueFilter(=, 'substring:myvalue')"}
于 2015-05-27T09:32:13.403 に答える