クラスターの HBase にアクセスするために、thrift インターフェイス ( http://apache.mesi.com.ar//incubator/thrift/0.5.0-incubating/ ) を使用しています。レコードを接続、取得、表示できます。開始日と終了日を使用します。
ドキュメント ( http://hbase.apache.org/docs/r0.89.20100924/apidocs/org/apache/hadoop/hbase/thrift/doc-files/Hbase.html#Fn_Hbase_scannerOpenWithStop ) によると、
列修飾子で正規表現を渡すこともできます。
私の質問は簡単です - どのように?
私の作業コード:
int scannerId = client.scannerOpenWithStop("TABLE_NAME".ToByteArray(),
"START_ROW".ToByteArray(), "STOP_ROW".ToByteArray(),
new List<string>(){"COLUMN_FAMILY" }.ToByteArrayList());
ToByteArray()
とToByteArrayList()
は、各文字列に対して ToByteArray を呼び出す ...List を使用した拡張関数であり、リストに詰め込みます。string->byte[] 変換の方法が問題を引き起こす可能性がある場合に備えて、以下に記載しています。
public static byte[] ToByteArray(this string s)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
return encoding.GetBytes(s);
}
START_ROW
上記のコードを実行すると、との変更によって変化するデータが返されますSTOP_ROW
。:
リストのエントリにコロン ( ) を追加するとCOLUMN_FAMILY:
、データが返されます。完全な列名COLUMN_FAMILY:http://www.myurl.com/more/goes/here
を入力すると、その URL のすべての値が取得されます。
私がやりたいのは、COLUMN_FAMILY:http://www.myurl.com/.*
(または他の正規表現) を持っていて、関連するデータを返すようにすることです。
必要な例は 1 つまたは 2 つだけです。正規表現を機能させるために欠けているフォーマットまたはトリックがあると思います。