分享

hbase入库多版本问题

Lifing 发表于 2015-11-10 16:05:11 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 16494
使用java程序读取本地文件入库,建表时指定VERSION值为10.但是在java程序中只要指定了htable.setautoflush(false,true)   或者使用htable.put(list<put>)方式就只能入库最后一个版本的数据。只有autoflush为true并且使用htable.put(put)方式才可以正确入库十个版本的数据。但这样效率及其之底。实在想不通啊。求大神解答

已有(5)人评论

跳转到指定楼层
s060403072 发表于 2015-11-10 17:12:32
在创建hbase的时候,可以指定默认几个版本。
并且版本是递增的,比如第一个vsersion=value1
第二个vsersion=value2
如此递增,
楼主直接指定第十个版本,这个难以理解。
而且还成功了。


回复

使用道具 举报

Alkaloid0515 发表于 2015-11-10 17:17:52
通过调用HTable.setAutoFlush(true)有一条put就执行一次更新,只有当put填满客户端写缓存时,才实际向HBase服务端发起写请求。
这二者是一起的,只有put操作,才会一条条更新,这样每条记录才会有版本。批量达不到条件
回复

使用道具 举报

Lifing 发表于 2015-11-11 12:37:49
s060403072 发表于 2015-11-10 17:12
在创建hbase的时候,可以指定默认几个版本。
并且版本是递增的,比如第一个vsersion=value1
第二个vsersi ...

如果不指定versions,默认就是最大存储三份历史数据,我指定versions为10就是说最大存储10个历史版本数据,这样有问题?
create 'tbl', {NAME=>'d', VERSIONS=>'10'}, {SPLITS=>['00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29']}
回复

使用道具 举报

Lifing 发表于 2015-11-11 12:41:17
Alkaloid0515 发表于 2015-11-10 17:17
通过调用HTable.setAutoFlush(true)有一条put就执行一次更新,只有当put填满客户端写缓存时,才实际向HBase ...

那有什么方式提高效率吗?
回复

使用道具 举报

NEOGX 发表于 2015-11-11 14:00:35
Lifing 发表于 2015-11-11 12:41
那有什么方式提高效率吗?

希望有所帮助
Hbase几种数据入库(load)方式比较
http://www.aboutyun.com/thread-8601-1-1.html



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条