日期:2014-05-16  浏览次数:20462 次

HBase数据插入单个put数据库中有数据,putList数据库无数据
    本人新手,工作仅一年,如果所发内容有误还请路过的朋友指正,现在这里谢过
刚刚使用HBase一个月,本来用的hbase0.90.4,其对应的Java API中关于插入数据有void org.apache.hadoop.hbase.client.HTableInterface.put(List<Put> puts)这样一个方法,用于插入多列(Column Qualifier)数据,之前看过的一个文档说的是当关闭HTableInterface(当时的实现类是HTable)这个的时候,也就是调用HTable.close()方法后。如果之前将自动提交设为false(HTable.setAutoFlush(false)),在调用HTable.close()方法之后会自动提交。这个说明在0.90.4上面没什么问题。
    后面领导说正式环境用一个新点的版本,就换成了0.94.8,相应的hadoop1.1.2,zookeeper3.4.5,这时候就出现了一个问题。在使用HTable.put(put)(插入单列数据)的时候没问题,因为没有设置AutoFlush为false,但在HTable.put(putList)插入多列的时候,数据库中没有相应数据,而且也没报错,以为有一些版本兼容性问题将jar包什么的换一遍,jdk,tomcat...最后增加了一句HTable.flushCommits();解决了这个问题,就是手动提交。不同的版本用起来还是有蛮多不同的,需要多加小心。