我有一个10万行的HTable,每行平均有30,000列。
有一个过程可以更新其中一个单元格(一行一列)。
例如:
row1 cf:1=2 cf:2=2 cf:3=4 cf:4=1 ... cf:30000=1
我只需要更新row1's cf:3 from 4 to 5(add 1)
我该如何更新表?
hbase是否有一些更新功能,如mysql' s:
update `testtable` set `cf3`=`cf3`+1 where row='row1';
我用python编写了程序。现在我使用getRow获取所有行,这非常慢。然后修改该值,然后放回htable。
答案 0 :(得分:1)
你可以使用put to" over write"旧的价值。 或者先删除旧值,然后输入新值。
或者,如果您在编码或测试时需要此功能, https://github.com/zhang-xzhi/simplehbaseviewer
您可以使用此类语句更新hbase中的数据。 插入MyRecordV05(名称,年龄)值(" allen"," 30")rowkey是intkey(" 0")
答案 1 :(得分:0)
HBase中没有像RDBM这样的更新命令。但你可以编写一个小程序来做到这一点。可能有两种方法,要么删除当前值,然后放入新值,要么只是将新值作为新版本。如果您对Java感到满意,可以使用 deleteColumn() 直接删除指定列的值。