简体   繁体   English

如何在HBase中更新现有列值

[英]How to update existing column value in HBase

I have following insert statement. 我有以下插入语句。

Put put = new Put(UserId.getBytes(charSet));
put.add("Actor".getBytes(charSet), "Verified".getBytes(charSet),Bytes.toBytes(verified));       
put.add("Actor".getBytes(charSet), "UtcOffset".getBytes(charSet),Bytes.toBytes(utcOffset));
put.add("Actor".getBytes(charSet), "PreferredUsername".getBytes(charSet),preferredUserName.getBytes(charSet));  
table.put(put);

Now I want to update inserted value preferredUserName with new preferredUsername. 现在,我想用新的preferredUsername更新插入的值PreferredUserName。 Please help me 请帮我

In HBase, you can update values in different column-qualifiers separately, and the old value in one column-qualifer will be "shadowed" by the new value. 在HBase中,您可以分别更新不同列限定符中的值,而一个列限定符中的旧值将被新值“遮盖”。 Strictly speaking, the new value forms a new version, and by default you always Get the latest version if you don't specify timestamps in Get/Scan. 严格来说,新值构成了一个新版本,默认情况下,如果未在“获取/扫描”中指定时间戳,则始终会获取最新版本。

So just "Put" the new preferredUsername into "PreferredUsername" column-qualifier. 因此,只需将新的PreferredUsername放入“ PreferredUsername”列限定符中即可。

Put put = new Put(UserId.getBytes(charSet));
put.add("Actor".getBytes(charSet), "PreferredUsername".getBytes(charSet),newPreferredUserName.getBytes(charSet));  
table.put(put);

This will "shadow" inserted preferredUserName with newPreferredUserName for the "UserId" row. 这将“阴影”插入“ UserId”行的带有newPreferredUserName的preferredUserName。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM