流如何關聯維表-FlinkStreamSQL代碼流程解析

因公司產品需要用到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
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容