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

时间:2019-05-10 08:11:13

标签: java hadoop hbase

由于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)

1 个答案:

答案 0 :(得分:0)

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

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