hbase数据库:是否可以使用JavaAPI/RESTAPI对列限定符进行筛选?

bn31dyow  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(303)

我对hbase是完全陌生的,我习惯于使用rdbms数据库,在那里我可以使用where子句来过滤记录。那么,是否有类似于使用hbase公开的javaapi或restapi来使用列限定符过滤记录的rdbms的东西呢?

vd2z7a6w

vd2z7a6w1#

是的,有可能。
如果只想获得某些列限定符,那么应该使用 addColumn(byte[] family, byte[] qualifier) 获取或扫描示例的方法。这是查询所需限定符的最有效方法,因为只需要访问表示请求中特定列的hbase存储。用法示例:

Get = new Get(Bytes.toBytes("rowKey"));
get.addColumn(Bytes.toBytes("columnFamily", Bytes.toBytes("Qual"));

Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("columnFamily"), Bytes.toBytes("Qual1"));
scan.addColumn(Bytes.toBytes("columnFamily"), Bytes.toBytes("Qual2"));

如果需要更复杂的工具来过滤限定符,那么可以使用JavaAPI中的限定符过滤类。示例如何使用某些限定符查询所有列:

Filter filter = new QualifierFilter(CompareFilter.CompareOp.EQUAL,
  new BinaryComparator(Bytes.toBytes("columnQual")));

Get = new Get(Bytes.toBytes("rowKey"));
get.setFilter(filter);

Scan scan = new Scan();
scan.setFilter(filter);

此外,您还可以阅读另一个hbase过滤器,以及如何在hbase官方文档中组合它们。

相关问题