我想知道使用Java API在单个put调用中覆盖单元格值的行为是什么。例如
HTable table;
....
Put p = new Put("key".getBytes());
p.add("cf".getBytes(), "qualifier".getBytes(), "value1".getBytes());
p.add("cf".getBytes(), "qualifier".getBytes(), "value2".getBytes());`
table.put(p);
我想知道这会是什么行为?
如果在某处记录,那么文档的链接也可以阅读。
答案 0 :(得分:0)
我使用一段简单的代码验证了
public class HbaseSample {
public static void main(String[] args) throws IOException {
Configuration config = HBaseConfiguration.create();
HTable table = new HTable(config, "ehsan_test");
Put p = new Put("key".getBytes());
p.add("cf1".getBytes(), "qualifier".getBytes(), "value1".getBytes());
p.add("cf1".getBytes(), "qualifier".getBytes(), "value2".getBytes());
table.put(p);
}
}
看起来问题中的选项(1)是正确的行为。更多的是它存储的“value2”。 任何文档参考,仍然会受到赞赏。
答案 1 :(得分:0)
简而言之,第一个add
电话被第二个覆盖。而不是文档参考,让我们来看看代码:
Put
来电createPutKeyValue KeyValue
的实例,在这种情况下使用相同的行键,列族和限定符参数,add
会替换第一个中指定的值。 所以最后一个获胜;)