美文网首页
流如何关联维表-FlinkStreamSQL代码流程解析

流如何关联维表-FlinkStreamSQL代码流程解析

作者: 梧上擎天 | 来源:发表于2019-06-04 15:50 被阅读0次

因公司产品需要用到Flink和动态维表关联的功能。但Flink目前截至1.8版本还不支持这种维表的join操作,需要在阿里给Flink贡献的 Flink Aysnc I/O 功能上再做封装,则在GitHub上找到了FlinkStreamSQL开源项目,并记录下了代码阅读记录。

核心方法

其实很简单使用Apache Calcite把SQL抽象成语法树,如果遇到join语句就把这个语句拆出来,专门做处理,使用Flink底层api生成新的DataStream,然后在做join,这样就变成流与流之间Flink语法支持的join了。

  • 维表的数据量不大,可以全部加载到内存中。

  • 维表的数据量比较大加入LRU缓存,异步记载并部分加载到内存中。

  • 还可以不用缓存纯异步生成DataStream

异步调用官方图:


image.png

代码阅读流程图

本地模式SQL解析流程.jpg

运行模式支持

目前开源的支持本地测试,Standalone、yarn和yarnPer模式


ClusterMode分类.jpg

相关文章

网友评论

      本文标题:流如何关联维表-FlinkStreamSQL代码流程解析

      本文链接:https://www.haomeiwen.com/subject/mttrxctx.html