flink源碼閱讀---DataStream數據架構描述1-core底層 架構

flink提供了流計算和批計算,對應的api分別數dataStream api和dataSet api,下面我們從源碼層面對dataStream進行簡單分析。

DataStream數據結構:

DataStream表示相同類型的元素流。一個DataStream可以通過應用轉換爲另一個DataStream。DataStream包含StreamExecutionEnvironment上下文和Transformation,Transformation表示創建datastream的操作。

DataStream方法:

DataStream類結構:

DataStream數據流

datastream是流處理的api,既然是流處理,就必須有獲取數據,處理數據,轉換爲另一個DataStream的操作,最後還應該有數據持久化的操作。

flink中獲取數據的接口是:org.apache.flink.api.common.io.InputFormat

數據處理的接口是:   org.apache.flink.api.common.operators.Operator

數據持久化的接口是:org.apache.flink.api.common.io.OutputFormat

我們的使命是探究DataStream和InputFormat,Operator,OutputFormat 之間的關係。

InputFormat:

InputFormat is The base interface for data sources that produces records.

InputFormat處理以下問題:

1. 它描述瞭如何將輸入分割成可並行處理的分塊

2. 它描述瞭如何從輸入分割中讀取記錄

3. 它描述瞭如何從輸入中收集基本的統計信息。

InputFormat的生命週期如下:

1. 被Configuration配置初始化,基礎域從Configuration中讀取

2.可選:編譯器調用它來生成關於輸入的基本統計信息

3.調用它來創建輸入分割

4.每個並行InputFormat任務創建一個實例,配置它,併爲特定的分割打開它

5.從InputFormat讀取所有記錄

6.關閉InputFormat

InputFormat集成結構

Operator:

 批處理的基類是org.apache.flink.api.common.operators.Operator

 而流處理的基類是org.apache.flink.streaming.api.operators.StreamOperator

,從這感覺批處理纔是嫡系,流處理是自定義基類。我們這次關心流處理,所以後面在討論stream api時候討論StreamOperator.

 

OutputFormat:

用於消耗記錄的輸出的基本接口。outputFormat描述如何存儲最終記錄,例如在文件中。生命週期如下:

1.configure()可用於實現初始化時可能附加的參數(配置)

2.每個並行輸出任務創建一個實例,配置它並打開它

3.並行實例的所有記錄都被傳遞到outputFormat

4.關閉outputFormat。

 

 


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章