分享

面试关于hbase rowkey连续性存储的问题

tchangwei 发表于 2015-3-2 18:02:26 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 36725
提示: 作者被禁止或删除 内容自动屏蔽

已有(6)人评论

跳转到指定楼层
xuanxufeng 发表于 2015-3-2 23:41:38
rowkey是以字典顺序排序的。
而存储的字节码,字典排序,我们知道,如果是字 母,那就是字母的顺序,比如,有两个rowkey,rowkey1:aaa222,rowkey2:bbb111,那么rowkey1是排在 rowkey2前面的,因为按字典,a排在b前面,如果rowkey2的第一位也是a,那么就根据第二位来比较,如果还相同,则比较第三为,后面同样。这 个理解了,我们在根据rowkey范围查询的时候,我们一般是知道startRowkey,如果我们通过scan只传startRowKey : d开头的,那么查询的是所有比d大的都查了,而我们只需要d开头的数据,那就要通过endRowKey来限制。我们可以通过设定endRowKey为:d 开头,后面的根据你的rowkey组合来设定,一般是加比startKey大一位。比如说rowkey设计为:用户ID-日期,那么查某个用户某天的数 据,startKEY为3231-20121212,endKey为:3231+201213,那么你查到的就是用户为3231在20121212这一天 的数据。

回复

使用道具 举报

rsgg03 发表于 2015-3-2 23:58:38
这个问题比较复杂,单纯的回答是或则不是都不对。
因为这个考察的是rowkey的设计。
rowkey是按照顺序存储的,可以了解下在查询的时候,我们会涉及到范围查询start key,end key
如果不做任何的处理,那么所有数据,可能都会存储在一个服务器上,
a表与b表rowkey是一致的,那么可能就是顺序的存储的

也就是列表为a-b-a
,如果不一致,可能那么
可能分布式两个region里,可能是连续的。
回复

使用道具 举报

xiangyuwen 发表于 2015-3-3 08:43:25
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

desehawk 发表于 2015-3-3 17:00:53
这个其实是即对知识的考察,又对思路的考察。
多方面的。比如还有预分区与不分区,散列非散列,都是不一样的
回复

使用道具 举报

tchangwei 发表于 2015-3-4 09:18:52
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

admin 发表于 2015-3-15 15:26:14
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条