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

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

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

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

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

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

收起
参与17

查看其它 2 个回答美国队长的回答

美国队长美国队长研发工程师Alibaba

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

互联网服务 · 2017-07-05
浏览9391
z630860668 邀答

回答者

美国队长
研发工程师Alibaba
擅长领域: 大数据大数据平台数据库

美国队长 最近回答过的问题

回答状态

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