分享

spark 生成HFile bulkload到hbase 延伸三

remarkzhao 发表于 2018-3-15 11:35:53 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 9786
关于KeyValue的排序以及HFile可否存在重复KeyValue  

各位大佬 小弟早上又操作了一下。



从关系型数据库读取数据集,通过循环拼接形成一系列的HBASED的KeyValue(rowkey,(cf,cols,value))的键值对RDD

因为生成HFile要对rowkey+cf+cols进行排序,请问这个该怎么操作。

问题2: 请问HFile是否允许同样的数据存在2条?

已有(7)人评论

跳转到指定楼层
tntzbzc 发表于 2018-3-15 11:59:13
生成rdd后,使用sort或则 sortBy直接排序即可。
贴出你的代码来。
第二个问题,它是不允许重复的。否则也会报错。
回复

使用道具 举报

tntzbzc 发表于 2018-3-15 12:00:34
排序参考
Scala的map实现key和value排序及各种排序比较等知识讨论
http://www.aboutyun.com/forum.php?mod=viewthread&tid=22942


回复

使用道具 举报

remarkzhao 发表于 2018-3-15 12:23:11
tntzbzc 发表于 2018-3-15 12:00
排序参考
Scala的map实现key和value排序及各种排序比较等知识讨论
http://www.aboutyun.com/forum.php?mo ...

现在出现的是字典排序问题 (rowkey,(cf,A打头的列名,value))  ,(rowkey,(cf,W打头的列名,value)),rowkey是关系型数据的pk键+2个其他字段拼接成的,

关系型数据库有多条相同的记录,就是pk键重复,其他两个字段的列值也相同,也就是最后拼成的rowkey是相同的, 关系型数据库每条记录大概75个字

段,这个HFILE排序是不是第一条关系型数据库记录排完,同样的第二条开始就不

能排了??我的理解是这样。。具体看我的理解


第一条关系型数据库拼出来的: (rowkey1,(cf,col1,value11)),(rowkey1,(cf,col2,value12))……(rowkey1,(cf,col75,value175))

第二条相同pk键关系型数据库记录拼出来的: (rowkey1,(cf,col1,value21)),(rowkey1,(cf,col2,value22))……(rowkey1,(cf,col75,value275))

这种情况下,插完第一条记录之后一插(rowkey1,(cf,col1,value21)) 是不是就会报错??

有没有可能这样排序生成HFile : (rowkey1,(cf,col1,value11)),(rowkey1,(cf,col1,value21)),(rowkey1,(cf,col2,value12)),(rowkey1,(cf,col2,value22))…………(rowkey1,(cf,col75,value175)),(rowkey1,(cf,col75,value275))

回复

使用道具 举报

tntzbzc 发表于 2018-3-15 12:33:12
本帖最后由 tntzbzc 于 2018-3-15 12:50 编辑
remarkzhao 发表于 2018-3-15 12:23
现在出现的是字典排序问题 (rowkey,(cf,A打头的列名,value))  ,(rowkey,(cf,W打头的列名,value)),rowke ...

重复肯定是不行的。rowkey必须是唯一的。为了防止相同,可以在后面对于相同的rowkey后面加01,第二条02。如果没有重复数据就是00.
重复的只要不超过100条,没有问题的。
回复

使用道具 举报

remarkzhao 发表于 2018-3-15 14:29:50
tntzbzc 发表于 2018-3-15 12:33
重复肯定是不行的。rowkey必须是唯一的。为了防止相同,可以在后面对于相同的rowkey后面加01,第二条02。 ...

不是说加了随机数就可以吗?后面怎么又说不超过100
回复

使用道具 举报

tntzbzc 发表于 2018-3-15 14:39:17
remarkzhao 发表于 2018-3-15 14:29
不是说加了随机数就可以吗?后面怎么又说不超过100

随机也可以,意思就是在原先的基础上再加上两位,用来区分rowkey,不至于相同。
对于重复的记录,相信应该不会超过100条吧。如果超过可以到三位,也就是1000以内。总之你根据自己的情况来设计
回复

使用道具 举报

remarkzhao 发表于 2018-3-15 15:06:14
tntzbzc 发表于 2018-3-15 14:39
随机也可以,意思就是在原先的基础上再加上两位,用来区分rowkey,不至于相同。
对于重复的记录,相信应 ...

恩。懂了。
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条