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是乙個抽象類,...