Closed freemanhjr closed 11 years ago
我们试着用hbase的bulk load给hbase导入,这样性能应该可以高些; 但是用delete之后,数据还在,重新导入也没报错,但这时就查不到数据了;
我们是想delete表中所有数据,不是一条;
那还不如先drop table再create table
你说的也没错;我是可以用drop table; 但是我的表结构没变,用delete也不该出错呀;
lealone-client和HBaseClient混合使用会导致数据很乱的,因为lealone是对版本号严格控制的,HBaseCliet默认使用当前时间戳作为版本号,这会带来很多混乱。
了解,我也发现很容易乱; 你说的lealone对版本号严格控制是什么意思?
目前lealone的设计只支持:
lealone对版本号严格控制是指每个region server维护自己独立的计数器,在region server写入记录时,记录的版本号由这个计数器提供,并不使用系统时间。
也就是说,用lealoneclient建的表,在用lealone写入后,不能用hbaseclient再写入; 我现在的需求是用lealoneclient建表,但是lealone client写入比较慢; 所以用hbaseclient写入;这个可能会写入多次; 当然也会用lealoneclient写入; 这样不行吗? 那不是无法解决导入数据太慢的问题了?
可以用lealoneclient建表,然后用hbaseclient bulk load,这样相当于是上面说的第1点
批量导入可以试试java.sql.Statement.executeBatch(),性能不如bulk load,如果数据不是千万级差不多也够用了。
delete from table并不会使用HBase的delete的,而是用put,意思是put一条特殊的记录,用HBaseClient去查还是能查得到,用lealone-client通过select去查就没有了。
导入不行是什么不行?最好能给出一些能重现的测试例子。