塩焼きブログ

塩焼きに関しての研究内容を公開しています

HBaseのカラムファミリから複数バージョンのQualifierのCellを取得する

昔はgetColumnを使ってKeyValue型を受け取ることで特定のQualifierのCellをVersions別に取得していたが、これらは非推奨となりgetColumnCellsを使ってCellそのものを処理する流れでQualifierのデータをVersions別に取得する必要がある。

Get get = new Get(rowKey)
    .setFilter(filter)
    .setTimeRange(min, max)
    .setMaxVersions(3);

List<Cell> cells = hBaseTable.get(get).getColumnCells("ad".getBytes(), Bytes.toBytes("cvtime"));
for (Cell cell : cells) {
    System.out.println(CellUtil.cloneValue(cell));
}

setMaxVersionsは指定するとResult型をループさせて複数のQualifierが得られる気がするが列ファミリーは1つずつが独立しているため複数セットで運用している場合は個別に取得する必要があり多少運用しづらいのが難点ですな。

参考