分享

关于从oracle表到hbase表的设计问题?

jchubby 发表于 2016-1-21 16:28:32 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 4 9930
第一次做hbase的设计,oracle里面有20张表,大致可以分为两组:交易表、信息表、协议表和操作表。
每个分组中都有,有的表数据量是1亿以上,有的表是几千万,或者几百万这种情况。
最开始想的是,直接将其导入一张hbase大表中,rowkey为手机号码的反转+时间戳(两个都是表中的字段),只有一个列族,可是一想,要把经常一起访问的数据放在一个列族中,那么每个分组可以作为一个列族,这样一来就需要4个列族,有点多了。
于是就考虑拆成几个hbase表,四张表,每个表一个列族,然后问题又来了:
oracle里面有些表的字段是重名的,rowkey一样的话(手机号码反转+时间戳为rowkey每个表中可能会有相同的值)如果直接导入,会将之前导入的数据覆盖掉,于是就想在导入之前rowkey加上各个表标志性的后缀,这么做合理吗?
另外,要导入hbase交易表的原几个oracle表,有很强的业务关联性,经常对三个表进行join处理,现在采取的措施是,写mr根据业务逻辑上的外键,把那几个表关联起来,得到的数据再由mr程序导入hbase,这一步是否有必要?还是可以直接别分导入?
(最后一段不知道有没有表达清楚,草率的画了个图将就着看一下)
oracle中的表:
1.png
导入hbase中,根据关联查询后导入,每行的每列都是有值的:
2.png
直接分别导入,不管关联,那么每行中有些列是空的:
3.png
最后,也不太可能是每个oracle表对应一个hbase表吧,有的才几百万的数据量?

已有(4)人评论

跳转到指定楼层
Alkaloid0515 发表于 2016-1-21 18:37:24
oracle里面有些表的字段是重名的,rowkey一样的话(手机号码反转+时间戳为rowkey每个表中可能会有相同的值)如果直接导入,会将之前导入的数据覆盖掉,于是就想在导入之前rowkey加上各个表标志性的后缀,这么做合理吗?
没有合理不合理的,适用于本公司,能够实现,性能也不错,并且用的顺手即可

另外,要导入hbase交易表的原几个oracle表,有很强的业务关联性,经常对三个表进行join处理,现在采取的措施是,写mr根据业务逻辑上的外键,把那几个表关联起来,得到的数据再由mr程序导入hbase,这一步是否有必要?还是可以直接别分导入


对于这个列是空没有关系的,如果关系数据库是不行的,确切的说楼主的是列族为空。hbase中列族为空是很正常的


回复

使用道具 举报

jchubby 发表于 2016-1-21 18:51:13
Alkaloid0515 发表于 2016-1-21 18:37
oracle里面有些表的字段是重名的,rowkey一样的话(手机号码反转+时间戳为rowkey每个表中可能会有相同的值 ...

这么说写mr做关联查询之后再导入hbase这步是可以不用的是吧,这么做可能就是查的时候比较方便,可以直接得到结果
回复

使用道具 举报

Alkaloid0515 发表于 2016-1-21 20:21:50
jchubby 发表于 2016-1-21 18:51
这么说写mr做关联查询之后再导入hbase这步是可以不用的是吧,这么做可能就是查的时候比较方便,可以直接 ...

其它你根据自己的业务。hbase列族是可以增加和删除的,这点没有问题
回复

使用道具 举报

jchubby 发表于 2016-1-22 09:20:22
Alkaloid0515 发表于 2016-1-21 20:21
其它你根据自己的业务。hbase列族是可以增加和删除的,这点没有问题

ok.thx~:-)
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条