【问题标题】:HBase database : Is it possible to filter on a column qualifier using Java API/REST API?HBase 数据库:是否可以使用 Java API/REST API 过滤列限定符?
【发布时间】:2017-09-02 16:50:58
【问题描述】:

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

【问题讨论】:

    标签: sql database filter hbase nosql


    【解决方案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 的信息。

    【讨论】:

      猜你喜欢
      • 2017-08-24
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 2018-12-16
      • 1970-01-01
      相关资源
      最近更新 更多