3

各行に関連するさまざまなIDがあります。たとえば、、、1001および1002。これらの各IDには、同様の属性のセットがあります。

したがって、私の考えは、列修飾子を含む1つの列ファミリー('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'

行(x)、列ファミリー(cf)、列(1001 *)をスキャンして、この場合は1001のすべての属性のマップを取得できますか?

明らかに、行キーに対してこれを行うことができますが、列修飾子が同じように機能するかどうかはわかりません。

4

1 に答える 1

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();
于 2012-09-20T11:39:59.507 に答える