HBase数据库:是否可以使用Java API / REST API过滤列限定符?

时间:2016-05-25 17:17:24

标签: sql database filter hbase nosql

我对HBase完全陌生,我已经习惯了RDBMS数据库,我可以使用 WHERE子句来过滤记录。 那么,是否有类似于使用HBase公开的 Java API REST API 来使用列限定符过滤记录的RDBMS?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。

如果您只想获得某些列限定符,则应使用GetScan个实例的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"));

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

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文档中的another HBase filtershow combine them