我是HBase的新手。请告诉我如何使用“扫描和过滤器”从HBase(示例代码片段)查询数据。搜索了很多。但是感到困惑。请帮助。谢谢。
最佳答案
在这方面寻求帮助并不难。搜寻如何使用hbase过滤器肯定会给您很多很好的链接。例如,请参见 this 和 this 。
对于使用过滤器的AFA,首先需要创建一个扫描对象,然后创建一个过滤器实例,将过滤器添加到此扫描对象,并使用 HTable 实例调用 getScanner()扫描对象作为其参数。 例如,我有一个表,其中包含一些与用户有关的数据,而行键是userID。现在,我想获取有关所有用户ID以 abc 开头的所有用户的所有信息。在这种情况下,我可以通过传递 abc 作为参数来使用 PrefixFilter 。这将返回所有行键以 abc 开头的行。像这样的东西:
public static void main(String[] args) throws IOException {
Configuration conf = HBaseConfiguration.create();
HTable table = new HTable(conf, TABLE_NAME);
String userID = "abc";
//Get the data
Scan s = new Scan();
Filter filter = new PrefixFilter(Bytes.toBytes("abc"));
s.setFilter(filter);
ResultScanner rs = table.getScanner(s);
for(Result r : rs){
System.out.println("VALUE : " + Bytes.toString(r.getValue(Bytes.toBytes("cf"), Bytes.toBytes("c1"))));
}
rs.close();
table.close();
}
结果 API提供了许多方法,您可以根据需要使用它们,例如 getRow(),getColumn()等。您可以查看 API 以获取更多信息。我还建议您获得 Lars George 的 HBase权威指南的副本。这是一本很棒的书,其中包含学习HBase所需的一切。有关过滤器,请参见第4章。
高温超导
关于hadoop - 在HBase中进行扫描和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18693165/