HBaseのJava APIのKeyValueクラスは、テーブルから取ってきたデータ(セル)を保持するクラス。
|
KeyValueから各要素を取り出すメソッドは、getBuffer()
とgetXXXOffset()
とgetXXXLength()
から新しいバイト配列を生成して返している。[2010-03-01]
したがって、バイト配列のオフセットと長さを引数にとるメソッドに値を渡したいのであれば、直接オフセットと長さを使う方がいい。
// String row = Bytes.toString(kv.getRow()); String row = Bytes.toString(kv.getBuffer(), kv.getRowOffset(), kv.getRowLength());
KeyValueの内部では、各要素をそれぞれ個別に保持しているわけではない。
「SplitKeyValue
skv = kv.split()
」は、各要素の値を各フィールドに保持したインスタンスとなる。
デバッガーで各要素の値を確認するのに便利ということらしい^^;
値(バイト配列) | オフセット | 長さ | 比較(equals) | SplitKeyValue | |
---|---|---|---|---|---|
ROW(キー) |
kv.getRow() |
kv.getRowOffset() |
kv.getRowLength() |
kv.matchingRow(r) |
skv.getRow() |
family | kv.getFamily() |
kv.getFamilyOffset() |
kv.getFamilyLength() |
kv.matchingFamily(f) |
skv.getFamily() |
qualifier |
kv.getQualifier() |
kv.getQualifierOffset() |
kv.getQualifierLength() |
kv.matchingQualifier(q) |
skv.getQualifier() |
column(項目) |
kv.getColumn() |
|
|||
value(値) |
kv.getValue() |
kv.getValueOffset() |
kv.getValueLength() |
skv.getValue() |
|
日時 |
kv.getTimestamp() |
kv.getTimestampOffset() |
skv.getTimestamp() |
family:qualifier
形式)を指定するメソッドはHBase0.89で基本的に廃止となっている。[2010-07-11]メンバー | ver | 備考 | 更新日 |
---|---|---|---|
COLUMN_FAMILY_DELIMITER |
familyとqualifierの区切り文字、すなわち「: 」の定数。 |
2010-07-11 | |
KeyValue.parseColumn(c) |
カラム名をfamilyとqualifierに分離して返す。 | 2010-07-11 | |
KeyValue.makeColumn(f, q) |
0.89 | familyとqualifierを結合したカラム名を返す。 | 2010-07-11 |
KeyValue.createKeyValueFromKey(byte[], offset, length) |
バイト列からKeyValueを生成する。 | 2010-07-11 | |
KeyValue.createKeyValueFromKey(byte[]) |
0.89 | バイト列全体からKeyValueを生成する。 | 2010-07-11 |
KeyValue.createKeyValueFromKey(ByteBuffer) |
0.89 | ByteBufferからKeyValueを生成する。 | 2010-07-11 |
KeyValueでは、使用目的(putとかDeleteとか)に応じたタイプを保持しているらしい。[2010-03-01]
KeyValue.Type type = KeyValue.Type.codeToType(kv.getType());
メソッド | 備考 | 更新日 |
---|---|---|
kv.isDelete() |
Delete・DeleteFamily・DeleteColumnかどうか。 | 2010-07-11 |
kv.isDeleteType() |
Deleteかどうか。 | 2010-07-11 |
kv.isDeleteFamily() |
DeleteFamilyかどうか。 | 2010-07-11 |