HBase列RegEx来自C#的Thrift

时间:2011-01-22 00:22:57

标签: c# hbase thrift

我正在使用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()ToByteArrayList()是扩展函数,有...列表为每个字符串调用ToByteArray,列表中的东西等等。我把它放在下面,以防我的string-&gt; byte []转换方法导致问题。

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

当我运行上面的代码时,它返回的数据会因START_ROWSTOP_ROW的变化而变化。如果我将列表中的冒号(:)添加到COLUMN_FAMILY:,它仍会返回数据。如果我在COLUMN_FAMILY:http://www.myurl.com/more/goes/here中添加完整的列名,则会获得该网址的所有值。

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

我应该需要一两个例子。我认为有一些格式或技巧我缺少让正则表达式工作。

1 个答案:

答案 0 :(得分:0)

COLUMN_FAMILY:/(I:^ HTTP://www.myurl.com)/

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

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