我有一个带有以下描述的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方式来完成它,请评论...
答案 0 :(得分:0)
您可以使用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());
}
}