由于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)
1条答案
按热度按时间jm2pwxwz1#
所有hbase数据都必须与列族相关联,即使没有填充其他数据。就你而言,如果
!condition1
那么你就不应该写任何东西: