hbaseインスタンスに次のシナリオがあります
hbase(main):002:0> create 'test', 'cf'
0 row(s) in 1.4690 seconds
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.1480 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0070 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0120 seconds
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value4'
0 row(s) in 0.0070 seconds
ご覧のとおり、最後の2つの挿入は、同じ列ファミリー、同じ列、同じキーに対するものです。しかし、hbaseを正しく理解していれば、cf:c + row3は、タイムスタンプ付きのすべてのバージョンの挿入値を持つセルを表します。
しかし、単純なスキャンは最近の値のみを返します
hbase(main):010:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1317945279379, value=value1
row2 column=cf:b, timestamp=1317945285731, value=value2
row3 column=cf:c, timestamp=1317945301466, value=value4
3 row(s) in 0.0250 seconds
セルのすべてのタイムスタンプ値を取得するにはどうすればよいですか、または時間範囲ベースのクエリを実行するにはどうすればよいですか?
列のバージョンを表示するには、バージョン数を指定する必要があります。
scan 'test', {VERSIONS => 3}
利用可能な場合は、2つのバージョンの列が提供されます。あなたもgetでそれを使うことができます:
get 'test', 'row3', {COLUMN => 'cf:c', VERSIONS => 3}
特定の時間の値を取得するには、TIMESTAMPも使用できます。
get 'test', 'row3', {COLUMN => 'cf:c', TIMESTAMP => 1317945301466}
2つのタイムスタンプの「間」の値を取得する必要がある場合は、 TimestampsFilter を使用する必要があります。
列ファミリで許可されるバージョンの数を変更するには、次のコマンドを使用します。
alter 'test', NAME=>'cf', VERSIONS=>2
次に、別のエントリを追加します。
put 'test', 'row1', 'cf:a2', 'value1e'
次に、さまざまなバージョンを確認します。
get 'test', 'row1', {COLUMN => 'cf:a2', VERSIONS => 2}
次のようなものを返します:
COLUMN CELL
cf:a2 timestamp=1457947804214, value=value1e
cf:a2 timestamp=1457947217039, value=value1d
2 row(s) in 0.0090 seconds
詳細については、次のリンクを参照してください: https://learnhbase.wordpress.com/2013/03/02/hbase-Shell-commands/ 。
Value4のcf:cの行キー 'row3'は一意である必要があります。そうでない場合、上書きされます。
hbase(main):052:0> scan 'mytable' , {COLUMN => 'cf1:1', VERSION => 3}
ROW COLUMN+CELL
1234 column=cf1:1, timestamp=1405796300388, value=hello
1 row(s) in 0.0160 seconds
hbase(main):053:0> put 'mytable', 1234, 'cf1:1', 'wow!'
0 row(s) in 0.1020 seconds
値が「hello」のcf1の列1は、同じ行キー1234と値が「wow!」の2番目のプットによって上書きされます。
hbase(main):054:0> scan 'mytable', {COLUMN => 'cf1:1', VERSION => 3}
ROW COLUMN+CELL
1234 column=cf1:1, timestamp=1405831703617, value=wow!
2 row(s) in 0.0310 seconds
これで、2番目の挿入にcf1の列1の新しい値「hey」が含まれ、最後の3つのバージョンのスキャンクエリに「wow!」と表示されるようになりました。および「ねえ」、バージョンが降順で表示されないようにしてください。
hbase(main):055:0> put 'mytable', 123, 'cf1:1', 'hey'
hbase(main):004:0> scan 'mytable', {COLUMN => 'cf1:1', VERSION => 3}
ROW COLUMN+CELL
123 column=cf1:1, timestamp=1405831295769, value=hey
1234 column=cf1:1, timestamp=1405831703617, value=wow!