hbase - 按列名前缀获取行的列名



我有一个带有以下描述的 Hbase 表。

对于行键,我的列的形式为 a_1,a_2,a_3,b_1,c_1,C_2 等,复合键格式。

假设我的一行是

row key - row1
column family - c1
columns - a_1, a_2,a_3,b_1,b_2,c_1,C_2,d_9,d_99

我可以通过任何操作检索 a,b,c,d 作为对应于 row1 的列,我不关心 a,b,c 的后缀是什么......

我可以获取给定行的所有列名,通过按行键的第一部分拆分将它们添加到集合中并发出集合。我很担心,如果有更好的方法来通过过滤器或其他一些 hbase 方法来完成它,请发表评论......

您可以使用 COlumnPrefixFilter 来实现这一点。您可以看到以下代码

    Configuration hadoopConf = new Configuration();
    hadoopConf.set("hbase.zookeeper.quorum", "localhost");
    hadoopConf.set("hbase.zookeeper.property.clientPort", "2181");
    HTable hTable = new HTable(hadoopConf, "KunderaExamples");
    Scan scan = new Scan();
    scan.setFilter(new ColumnPrefixFilter("A".getBytes()));
    ResultScanner scanner = hTable.getScanner(scan);
    Iterator<Result> resultsIter = scanner.iterator();
    while (resultsIter.hasNext())
    {
        Result result = resultsIter.next();
        List<KeyValue> values = result.list();
        for (KeyValue value : values)
        {
            System.out.println(value.getKey());
            System.out.println(new String(value.getQualifier()));
            System.out.println(value.getValue());
        }
    }

相关内容

  • 没有找到相关文章

最新更新