flink原始碼分析之source function

2021-10-17 03:57:44 字數 1387 閱讀 6926

public inte***ce sourcefunctionextends function, serializable
sourcefunction是資料流資料的基本介面,有run和cancel兩個方法

checkpointedfunction sources 帶有checkpoint檢查點的source必須卻表checkpoint狀態的儲存,更新以及element元素的傳送不能同時發生,為此利用checkpoint lock來保證.

timestamp 和 watermark,sourcefunction可以抽取element的timestamp以及傳送watermark,但這只針對timestamp的語義是eventtime,如果是processtime或ingestiontime的話,就會自動忽略.

一般情況下run方法內會有乙個loop,當執行cancel方法後,會中止迴圈並停止傳送資料.

inte***ce sourcecontext
sourcecontext中有幾個傳送資料的方法

//只傳送element

void collect(t element);

//傳送element和timestamp

void collectwithtimestamp(t element, long timestamp);

//傳送watermark

void emitwatermark(watermark mark);

還有乙個markastemporarilyidle將源標記為空閒,只在時間戳語義為ingrestiontime和eventtime時有效,允許下游處理在資料來源空閒沒有得到watermark時,處理自己的watermark

void markastemporarilyidle();
還有獲得getcheckpointlock(),保證checkpoint狀態的儲存更新和element資料傳送不是同時進行的.
object getcheckpointlock();
下面是官方給出的自定義sourcefunction的例子

public class examplecountsource implements sourcefunction, checkpointedfunction }}

public void cancel()

public void initializestate(functioninitializationcontext context) }}

public void snapshotstate(functionsnapshotcontext context)

}}

Flink 原始碼解析

1 flink 原始碼解析 原始碼編譯執行 2 flink 原始碼解析 專案結構一覽 3 flink 原始碼解析 local 模式啟動流程 4 flink 原始碼解析 standalone session 模式啟動流程 5 flink 原始碼解析 standalone session cluster...

原始碼分析之LayoutInflater

簡介 inflate填充的過程 viewstub,merge,include的載入過程 layoutinflater系統服務的註冊過程 systemserviceregistry類有個靜態 塊,完成了常用服務的註冊,如下 static 註冊am registerservice context.act...

原始碼分析之HashMap

首先hashmap繼承了abstractmap,並且實現了map cloneable和serializable三個介面。cloneable和serializable是比較常規的兩個介面,在這裡並不作為重點。重點將會放在abstractmap和map兩個規範上。其中abstractmap是乙個抽象類,...