簡介
在實際應用中,我們一般都需要將數據按照某個 key 進行分區(qū),然后再進行計算處理;所
以最為常見的狀態(tài)類型就是 Keyed State。之前介紹到 keyBy 之后的聚合、窗口計算,算子所
持有的狀態(tài),都是 Keyed State。
另外,我們還可以通過富函數類(Rich Function)對轉換算子進行擴展、實現自定義功能,
比如 RichMapFunction、RichFilterFunction。在富函數中,我們可以調用.getRuntimeContext()
獲取當前的運行時上下文(RuntimeContext),進而獲取到訪問狀態(tài)的句柄;這種富函數中自
定義的狀態(tài)也是 Keyed State。文章來源:http://www.zghlxwxcb.cn/news/detail-824409.html
什么是Key State
按鍵分區(qū)狀態(tài)(Keyed State)顧名思義,是任務按照鍵(key)來訪問和維護的狀態(tài)。它
的特點非常鮮明,就是以 key 為作用范圍進行隔離。
在進行按鍵分區(qū)之后,具有相同鍵的所有數據,都會分配到同一個并行子任務中;所以如
果當前任務定義了狀態(tài),Flink 就會在當前并行子任務實例中,為每個鍵值維護一個狀態(tài)的實
例。于是當前任務就會為分配來的所有數據,按照 key 維護和處理對應的狀態(tài)。
在底層,Keyed State 類似于一個分布式的映射(map)數據結構,所有的狀態(tài)會根據 key
保存成鍵值對(key-value)的形式。這樣當一條數據到來時,任務就會自動將狀態(tài)的訪問范圍
限定為當文章來源地址http://www.zghlxwxcb.cn/news/detail-824409.html
到了這里,關于Flink狀態(tài)編程之按鍵分區(qū)狀態(tài)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!