首页 > 解决方案 > 用于 Hbase 扫描的 ColumnPrefixFilter

问题描述

我有一个 Hbase 表,其中列出了列族和限定符:

maindata
content:master:909
content:master:899
content:master:97832
content:master:9902222
content:master:9
.
.
.
content:master:223343453

我需要在我的 Spark Java 类中向 Hbase Scan 对象添加一个过滤器,以仅获取 content:master:anynumber 列。就像是 :

    Scan scan = new Scan();
    scan.addColumn(Bytes.toBytes("content"),Bytes.toBytes("master:[ *[^0-9]. *]"));

这样我只能得到 content:master:anynumber columns 。Scan 是否支持这种模式?

标签: apache-sparkhbase

解决方案


  byte[][] prefixes = new byte[][] {Bytes.toBytes("master:")};
  Filter filter = new MultipleColumnPrefixFilter(prefixes);

  Scan scan = new Scan();
  scan.addFamily(Bytes.toBytes("content"));
  scan.setFilter(filter);

感谢 Hbase MultipleColumnPrefixFilter


推荐阅读