Flink State 深度講解

2021-10-09 16:27:52 字數 515 閱讀 3297

在基礎篇中的 1.2 節中介紹了 flink 是一款有狀態的流處理框架。那麼大家可能有點疑問,這個狀態是什麼意思?拿 flink 最簡單的 word count 程式來說,它需要不斷的對 word 出現的個數進行結果統計,那麼後乙個結果就需要利用前乙個的結果然後再做 +1 的操作,這樣前乙個計算就需要將 word 出現的次數 count 進行存著(這個 count 那麼就是乙個狀態)然後後面才可以進行累加。

對於流處理系統,資料是一條一條被處理的,如果沒有對資料處理的進度進行記錄,那麼如果這個處理資料的 job 因為機器問題或者其他問題而導致重啟,那麼它是不知道上一次處理資料是到哪個地方了,這樣的情況下如果是批資料,倒是可以很好的解決(重新將這份固定的資料再執行一遍),但是流資料那就麻煩了,你根本不知道什麼在 job 掛的那個時刻資料消費到**了?那麼你重啟的話該從**開始重新消費呢?你可以有以下選擇(因為你可能也不確定 job 掛的具體時間):

Flink state應用 實現topN

獲取資料源,自定義下沉器本處暫時不贅述,主要是對核心topn的 進行解析 獲取資料流並轉化成物件 datastream datastream datastreamsource.map value jsonobject.parseobject value,useraction.class 將亂序資料抽...

empty 函式深度講解

看到一道關於empty 函式得面試題,覺得很有意思。研究問題要有深入的精神。a1 null a2 false a3 0 a4 a5 0 a6 null a7 array a8 array array echo empty a1 true false echo empty a2 true false ...

Linux萬用字元知識深度講解

注意 linux統配符合三劍客 grep,awk,sed 正規表示式是不一樣的,因此,代表的意義也是 有較大區別的。萬用字元一般使用者命令bash環境,而linux正規表示式用於grep,sed,awk場景。萬用字元,代表任意 0到多個 字元 萬用字元,代表任意1個字元 連續不同命令的分隔符 配置檔...