Flink SQL在京东实时维度建模中的应用.docx
《Flink SQL在京东实时维度建模中的应用.docx》由会员分享,可在线阅读,更多相关《Flink SQL在京东实时维度建模中的应用.docx(14页珍藏版)》请在第一文库网上搜索。
1、Flink SQL在京东实时维度建模中的应用01问题在维度建模中有很多技术场景,本文挑选其中两个较难的场景来进行详细阐述。B. name;问题一实时多流全量关联的问题select * from A full join B on Ae name此问题关联SQL比较简单,只有A流和B流两个实时流进行full join,但还可能涉及到其中有一流数据需要关联全量历史数据。问题二实时流全量分组计算的问s(?l(?ct id, H , val, row_number() o (partit ion byname order val)rn A;select name, min(val) from A gro
2、up by k;这个问题是实时流全量分组计算,涉及到分组排序值,或者分组求最小值等操作。针对以上两个问题,似乎使用SQL处理起来比较简单,甚至我们可以直接用Flink SQL去完成。而实际直接使用以上Flink SQL计算存在若干问题。第一个问题是在最初生产数据的时候,可能并没有接入实时数据流。在实际场景中,往往需要在过程中接入实时数据。比如接入binlog之类的数据,其实是从当前时刻到未来这一时间段。例如商品SPU信息,一般需要有历史数据。只有获取历史数据,在订单数据流关联的时候,才能关联上这个订单所对应的历史信息。如果商品信息都是从产生后一段时间才接入数据,即从当前时刻才有的,那就无法获取
3、到历史信息。第二个问题是状态数据,在用Flink SQL进行计算时,需要维护若干状态数据放到内存中,这种操作比较消耗内存。对于商品几年的历史数据,如果将状态数据存放在rocksdb中,经测试性能无法得到保障。基于此,如果直接用Flink SQL肯定无法解决。以下分析怎么去解决此类问题。首先看第一个问,即实时多流全量关联的问题。第一部分就是从最初时刻到当前时刻的时间区间,可以认为是历史状态数据。此处分别是A表和B表的记录。然后我们按照对应的关联键,如分别按name进行关联。通过name字段把它拆成几个部分,右侧是关联出来的结果表。当有一个消息进入,这个消息体可能是一个变更的消息记录。此处略过较为
4、简单的新增或者删除操作,重点分析更新操作。I问题一:实时多流全量关联的问题(2)0, now)(3)Aidnameval100001aaa23100002aaa55100003bbb21100004bbb33100005bbb66100006ccc43(1)(AB1bbb21100003bbbpp3bbb33100004bbbPP4bbb66Bidnameval 1100001aaappi100002aaaPP2100003bbb即3100004bbbpp4100005dddpp510000643BAidAnameAvalBidBnameBvalEES23aaa23100001aaaPP1aa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Flink SQL在京东实时维度建模中的应用 SQL 实时 维度 建模 中的 应用