HBase:扫描列限定符 - 是否可能?

时间:2012-09-20 11:20:36

标签: hbase schema-design

我有一些与每行相关的各种ID:比方说,10011002。这些ID中的每一个都有一组类似的属性。

所以我的想法是让一个列族('cf')具有列限定符:

cf:1001-attribute1 -> 'value a'
cf:1001-attribute2 -> 'value b'
cf:1001-attribute3 -> 'value c'
cf:1002-attribute1 -> 'value d'
cf:1002-attribute2 -> 'value e'
cf:1002-attribute3 -> 'value f'

我是否能够扫描:row(x),column family(cf),columns(1001 *),以便在这种情况下我为1001选取所有属性的地图?

显然我可以为行键执行此操作,我不确定列限定符是否有效。

1 个答案:

答案 0 :(得分:3)

您可以使用ColumnPrefixFilter

HTableInterface t = ...;
byte[] prefix = Bytes.toBytes("1001");
Scan scan = new Scan() 
Filter f = new ColumnPrefixFilter(prefix);
scan.setFilter(f);
scan.setBatch(20); // set this if there could be many columns returned
ResultScanner rs = t.getScanner(scan);
for (Result r = rs.next(); r != null; r = rs.next()) {
  for (KeyValue kv : r.raw()) {
    // each kv represents a column
  }
}
rs.close();