flink維表join的幾種方式(1)

2021-10-03 21:39:38 字數 1263 閱讀 9248

維表join的幾種方式

一 將維表預載入到記憶體關聯

實現方式:

定義乙個類實現richflatmapfunction在open()方法中讀取全部資料載入到記憶體中。

優缺點:

因為存在記憶體中,所以僅支援小資料量維表;因為open方法中讀取,所以維表變化需要重啟作業。

二 通過distributed cache分發本地維度檔案到task manager後載入到記憶體關聯

實現方式:

通過env.registercachedfile註冊檔案

實現richfunction在open()方法中通過runtimecontext獲取cache檔案

解析使用檔案資料

優缺點:

不需要外部資料庫

支援的資料量小,更新維表配置檔案需要重啟作業

public class batchdemodiscache 

}@override

public string map(string value) throws exception

});result.print();}}

三 熱儲存關聯查詢

實現方式:

將維度資料匯入到熱儲存redis hbase es等,通過非同步io的方式查詢,利用cache機制將維度資料快取在記憶體。

優缺點:

維度資料不受限與記憶體,支援較多維度資料

維度更新結果可能有延遲,而且對外部儲存的壓力較大

四 廣播維表

實現方式:

利用broadcast state將維度資料流廣播到下游做join

將維度資料傳送到kakfa作為廣播原始流s1

定義狀態描述符mapstatedescriptor 呼叫s1.broadcast()獲得broadcaststream s2

呼叫非廣播流s3.connect(s2),得到broadcastconnectedstream s4

應用混合流的s4.process(),並在keyedbroadcastprocessfunction/broadcastprocessfunction實現關聯處理邏輯

優缺點:

維度資料實時更新

資料儲存在記憶體中,支援維表資料量比較小。

Flink 實時計算 維表 Join 解讀

flink 1.9 版本可以說是乙個具有里程碑意義的版本,其內部合入了很多 blink table sql 方面的功能,同時也開始增強 flink 在批處理方面的能力,真的是向批流統一的終極方向開始前進。flink 1.9 版本在 8.22 號也終於發布了。本文主要介紹學習 flink sql 維表...

Flink 定時載入維表

業務背景 原先有大量資料會去從redis中查詢,造成頻繁的連線和查詢,而且redis中的資料量很小,因此可以採用定時載入維表,將資料載入進每個subtask中。code class commercialadvrichmapfunction redishost string,redispass str...

Excel 一維二維表轉換(行列轉換)的幾種方法

方法一 excel透視列 選中資料來源 資料 從 選中想要更改為列的字段 這裡這裡是將星期改更改為列,所以選中的是星期列 轉換 透視列 在跳出的彈窗中值列選擇看你需求 這邊就是工作小時 開啟高階選項 聚合值函式也是看你需求,這邊選擇不聚合 關閉並上載即ok 方法二 excel資料透視表 選中資料 插...