0

我正在使用 thrift 接口 ( http://apache.mesi.com.ar//incubator/thrift/0.5.0-incubating/ ) 访问集群上的 HBase。我可以连接、获取和显示记录;使用开始日期和结束日期。

文档(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()and是扩展函数,其中ToByteArrayList()...List 为每个字符串调用 ToByteArray,列表中的内容等。我把它放在下面,以防我的 string->byte[] 转换方法可能导致问题。

public static byte[] ToByteArray(this string s)
{
    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
    return encoding.GetBytes(s);
}

当我运行上面的代码时,它返回的数据因 和 的变化而START_ROWSTOP_ROW:如果我在 List 中的条目中添加一个冒号 ( ),COLUMN_FAMILY:它仍然会返回数据。如果我在其中输入一个完整的列名,COLUMN_FAMILY:http://www.myurl.com/more/goes/here它将获得该 URL 的所有值。

我想要做的是拥有COLUMN_FAMILY:http://www.myurl.com/.*(或其他正则表达式)并让它返回相关数据,就像文档似乎说的那样。

我只需要一两个例子。我认为我缺少一些格式或技巧来使正则表达式正常工作。

4

1 回答 1

0

COLUMN_FAMILY:/(?i:^http://www.myurl.com)/

它看起来像前导和尾随/告诉它内容应该被解析为

http://blog.hypertable.com/?cat=1

于 2011-05-08T05:40:44.690 回答