hbase-get按列名前缀行的列名

wecizke3  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(308)

我有一个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的方式来完成它,请评论。。。

a7qyws3x

a7qyws3x1#

您可以使用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());
        }
    }

相关问题