由于hbase支持灵活的架构,我的用例需要限定符是动态值,并且仅在某些逻辑上可用(如果为true,则添加列,否则为跳过),在这种情况下,我们希望即使不向其中添加任何列也可以执行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)
答案 0 :(得分:0)
所有HBase数据都必须与列族相关联,即使没有填充其他任何内容。就您而言,如果!condition1
,那么您根本不应该写任何东西:
if(condition1){
Put p = new Put(Bytes.toBytes("rowkey"))
p.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("Q1")
table.put(p)
}