gpt4 book ai didi

java - 为什么 HBase 客户端在提交之前放置至少需要添加一列的对象?

转载 作者:行者123 更新时间:2023-12-02 05:48:22 25 4
gpt4 key购买 nike

由于 hbase 支持灵活的模式,并且我的用例需要限定符是动态值,并且仅在某些逻辑上可用(如果为 true,则添加列,否则跳过),在这种情况下,我们期望 put 执行应该没问题,即使不向其中添加任何列.

但是我们最终得到了这个错误:

java.lang.IllegalArgumentException: No columns to insert at org.apache.hadoop.hbase.client.HTable.validatePut(HTable.java:1500) at org.apache.hadoop.hbase.client.BufferedMutatorImpl.validatePut(BufferedMutatorImpl.java:152) at org.apache.hadoop.hbase.client.BufferedMutatorImpl.mutate(BufferedMutatorImpl.java:127) at org.apache.hadoop.hbase.client.HTable.put(HTable.java:1028)


Put p = new Put(Bytes.toBytes("rowkey"))
if(condition1){
p.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("Q1")
}
table.put(p)

最佳答案

所有 HBase 数据都必须与列族关联,即使没有填充任何其他数据。在你的情况下,如果 !condition1 那么你根本不应该写任何东西:

if(condition1){
Put p = new Put(Bytes.toBytes("rowkey"))
p.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("Q1")
table.put(p)
}

关于java - 为什么 HBase 客户端在提交之前放置至少需要添加一列的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56073332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com