当rowkey未完全知道时的HBase查询

时间:2013-11-21 04:39:33

标签: hadoop hbase

我打算在HBase中存储流媒体天气数据。我的rowkey是: [5个字母城市代码] [时间戳],其中时间戳为[日期] [时间与HH:mm:ss.SSS] 我只有一个名为“温度”的专栏。所以样本数据看起来像:

NEWYO20131121080932123 32.4  
NEWYO20131121081034342 34.6  
NEWYO20131121081156424 31.8  
NEWYO20131121081223532 24.9  
SINGA20131121091142563 23.1  
SANFR20131121091214763 22.1 

我想查询数据,以便在11月21日8:11到8:13之间返回纽约的温度值(应该返回第3行和第4行)

如何使用Java API为此编写查询。

我遇到了Scan(byte[] startRow, byte[] stopRow),但我不认为我可以使用它,因为我在检索数据时不知道确切的rowkey(因为密钥末尾的秒和毫秒) )

(是否可以将regex用于rowkeys?)

2 个答案:

答案 0 :(得分:1)

您可以使用RowFilter。以下代码将提供帮助

Filter filter2 = new RowFilter(CompareFilter.CompareOp.EQUAL,
new RegexStringComparator("regex"));
scan.setFilter(filter2);
ResultScanner scanner2 = table.getScanner(scan);
for (Result res : scanner2) {
   System.out.println(res);
}

答案 1 :(得分:0)

startkey是NEWYO20131121081100000
结束键是NEWYO20131121081400000

顺便说一句: 无需使用hbase本机API。 你可以查看http://phoenix.incubator.apache.org/
https://github.com/zhang-xzhi/simplehbase