2016-10-07 3 views
0

RegexStringComparatorを使用しますが、1|2|3のような正規表現を使用してhbaseにバイトとして書き込まれた値をフィルタリングすることについては不明です。Hbase - RegexStringComparatorはバイナリ値で動作しますか?

これは誰でも確認できますか?ドキュメンテーションは何も言わない。

EDIT:私の質問は十分にはっきりしていないと思います。私はとのHBaseに書き込まれた値でHBaseのフィルターとしてRegexStringComparatorを使用することができることを承知していた文字列のような:

は、行キーmyrow123

c:name, timestamp=1234567891234, value=Irene

しかし、私もそれを使用することができます値はHbaseに次のようなバイトとして書き込まれます。

行キー\x6d\x79\x72\x6f\x31\x32\x33

c:\x6e\x61\x6d\x65, timestamp=1234567891234, value=\x49\x72\x65\x6e\x65

答えて

0

それは作業を行います。このような正規表現をプロジェクトで使用しました。 RegexStringComparatorは内部でPattern.compileを使用し、続いてmatcher(str).find()をデフォルトで使用し、Java正規表現APIを使用して動作するものはすべてHBaseフィルタで動作するはずです。

+0

こんにちは、あなたの返信ありがとうございました。私は元の投稿に自分の質問を指定しました。 – padmalcom

+0

HBaseでサポートされている唯一のデータ型はbyte []なので、上記の両方の行は同等です(2番目の文字列は生の文字列をバイトに明示的に保存しない限り)。実際、クライアントAPIは、rowKey、columnFamily、columnQualifier、およびvalueのすべてについてbyte []を期待しています。シェルは、byte []との変換によってプリミティブを配置し表示する簡単な方法を提供します。 RegexStringComparatorを使用すると、指定されたエンコーディング(デフォルトはUTF8)を使用してbyte []データがStringに変換され、正規表現APIが適用されます。 – balaudt

0

カスタムコンパレータを書く以外の方法はありますか?

関連する問題