我有一些与每行相关的各种ID:比方说,1001
和1002
。这些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选取所有属性的地图?
显然我可以为行键执行此操作,我不确定列限定符是否有效。
答案 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();