对于30亿甚至更大数据的增量更新,选用什么大数据方案比较好?

数据源比方说是机场的航班数据,量在每天1亿。需要每天运行spark任务将航班数据转换为一定格式的结果数据(每天的结果数据有1亿,已经存在的结果数据30亿)。然后以结果数据的id做增量更新(原始结果有的话 更新,没有的话插入,将每天的1亿更新到30亿里)

这种场景用mysql 或者 oracle的话有对应的语法,比如oracle的mergeinto 一次就做完,但是mysql 和oracle 难以支撑这么大的数据量。

hbase 又不支持 merge into这种语法,需要将结果数据全量加载进来再和每天处理的数据作比对,这个过程很慢而且对内存的压力很大。

请问专家,这种场景该如何选型解决?

参与17

3同行回答

美国队长美国队长  研发工程师 , Alibaba
可以从你的底层存储方式着手,比如你的30亿数据是否可以划分成3层,内存区,热存储区,冷数据区,新的数据过来,先放内存,然后后台进程自动对内存中的数据跟热区数据进行比对是否存在,设置数据降级机制,哪些数据可能用的比较少可以先从内存中降级到热存储区如果你想用hbase的话,建议你根...显示全部

可以从你的底层存储方式着手,比如你的30亿数据是否可以划分成3层,内存区,热存储区,冷数据区,新的数据过来,先放内存,然后后台进程自动对内存中的数据跟热区数据进行比对是否存在,设置数据降级机制,哪些数据可能用的比较少可以先从内存中降级到热存储区
如果你想用hbase的话,建议你根据你的业务场景事先分配好region,1天的数据过来再插入之前可以用bloomfilter这个高效率的判断是否存在而不需要全部数据都加载到内存中,然后利用批量bulkload的方式,当然你要注意你的memstore设置大小,你的hstore设置大小
不管哪种数据插入方式肯定都后台去执行的插入操作。
个人想法,有错地方还请指出

收起
互联网服务 · 2017-07-05
浏览9355
z630860668 邀答
JhonJhon  技术经理 , 小学生
在数据字段上加入哈希值 通过分组验证插入 分组策略自定义 从实际上取消数据库的读运算 减少数据库的读压力,插入也是分组的 一般在数据库上做了分区 ,有多个的缓冲池 可以大大加速插入...显示全部

在数据字段上加入哈希值 通过分组验证插入 分组策略自定义 从实际上取消数据库的读运算 减少数据库的读压力,插入也是分组的 一般在数据库上做了分区 ,有多个的缓冲池 可以大大加速插入

收起
IT咨询服务 · 2017-07-05
浏览9041
redgreatredgreat  数据库管理员 , leadcom
在用kettle的insert/update,抽取源数据的每天新增/变动量,跨库新增至目标数据库,缺点就是速度很慢,有时还莫名其妙的丢数据不更新!显示全部

在用kettle的insert/update,抽取源数据的每天新增/变动量,跨库新增至目标数据库,缺点就是速度很慢,有时还莫名其妙的丢数据不更新!

收起
系统集成 · 2017-07-05
浏览8943

提问者

z630860668
研发工程师网易

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-07-05
  • 关注会员:5 人
  • 问题浏览:12929
  • 最近回答:2017-07-05
  • X社区推广