使用现有值在 HBase 中更新
Upsert in HBase using existing value
我正在使用 HBase 存储一些流数据,并且我的值从一个插入演变成另一个,并且使用现有值。
我有一个这样创建的 table :
hbase(main):005:0> create ‘mytable’,’mycolfam’
table 将包含一个字段,名为 val
首先,我插入数据 (key=1, val=10) :
hbase(main):005:0> put 'mytable','1','mycolfam:val',10
然后,我有相同键'1'的传入数据(key=1,val=12),HBase中插入的值必须是新旧值之和(10+12 ).
hbase(main):005:0> put 'mytable','1','mycolfam:val',oldvalue+newvalue
我尝试先获取旧值,但我想以更优化的方式进行。
有人知道怎么做吗?
谢谢
您可以为此使用计数器和增量。与执行 get 和 put 以增加值不同,它将在单个事务中执行。
请注意,存储的值是二进制格式。
hbase(main):003:0> incr 'mytable', '1', 'mycolfam:val', 1
COUNTER VALUE = 1
Took 0.1761 seconds
hbase(main):004:0> get 'mytable', '1', 'mycolfam:val'
COLUMN CELL
mycolfam:val timestamp=1554226437325, value=\x00\x00\x00\x00\x00\x00\x00\x01
1 row(s)
Took 0.0379 seconds
hbase(main):005:0> incr 'mytable', '1', 'mycolfam:val', 10
COUNTER VALUE = 11
Took 0.0086 seconds
hbase(main):006:0> get 'mytable', '1', 'mycolfam:val'
COLUMN CELL
mycolfam:val timestamp=1554226478551, value=\x00\x00\x00\x00\x00\x00\x00\x0B
1 row(s)
Took 0.0207 seconds
hbase(main):007:0>
要从值中减去,只需使用负数作为最后一个参数即可。
我正在使用 HBase 存储一些流数据,并且我的值从一个插入演变成另一个,并且使用现有值。
我有一个这样创建的 table :
hbase(main):005:0> create ‘mytable’,’mycolfam’
table 将包含一个字段,名为 val
首先,我插入数据 (key=1, val=10) :
hbase(main):005:0> put 'mytable','1','mycolfam:val',10
然后,我有相同键'1'的传入数据(key=1,val=12),HBase中插入的值必须是新旧值之和(10+12 ).
hbase(main):005:0> put 'mytable','1','mycolfam:val',oldvalue+newvalue
我尝试先获取旧值,但我想以更优化的方式进行。
有人知道怎么做吗? 谢谢
您可以为此使用计数器和增量。与执行 get 和 put 以增加值不同,它将在单个事务中执行。
请注意,存储的值是二进制格式。
hbase(main):003:0> incr 'mytable', '1', 'mycolfam:val', 1
COUNTER VALUE = 1
Took 0.1761 seconds
hbase(main):004:0> get 'mytable', '1', 'mycolfam:val'
COLUMN CELL
mycolfam:val timestamp=1554226437325, value=\x00\x00\x00\x00\x00\x00\x00\x01
1 row(s)
Took 0.0379 seconds
hbase(main):005:0> incr 'mytable', '1', 'mycolfam:val', 10
COUNTER VALUE = 11
Took 0.0086 seconds
hbase(main):006:0> get 'mytable', '1', 'mycolfam:val'
COLUMN CELL
mycolfam:val timestamp=1554226478551, value=\x00\x00\x00\x00\x00\x00\x00\x0B
1 row(s)
Took 0.0207 seconds
hbase(main):007:0>
要从值中减去,只需使用负数作为最后一个参数即可。