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

brgchamk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(289)

由于hbase支持灵活的模式,并且我的用例需要限定符是动态值,并且仅在某些逻辑上可用(如果为true add column else skip),在这种情况下,我们希望put执行应该是正常的,即使不向其中添加任何列。
但我们最终会得到这个错误:
java.lang.illegalargumentexception:org.apache.hadoop.hbase.client.htable.validateput(htable)中没有要插入的列。java:1500)在org.apache.hadoop.hbase.client.bufferedmutatorimpl.validateput(bufferedmutatorimpl。java:152)位于org.apache.hadoop.hbase.client.bufferedmutatorimpl.mutate(bufferedmutatorimpl。java:127)在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)
jm2pwxwz

jm2pwxwz1#

所有hbase数据都必须与列族相关联,即使没有填充其他数据。就你而言,如果 !condition1 那么你就不应该写任何东西:

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

相关问题