flink學習系列--基礎知識學習(四)

前言

這一講將介紹一下序列化機制和過程函數(processfunction)。

序列化機制

使用 Flink 編寫處理邏輯時,新手總是容易被林林總總的概念所混淆:

 爲什麼 Flink 有那麼多的類型聲明方式?
 BasicTypeInfo.STRING_TYPE_INFO、Types.STRING 、Types.STRING() 有何區別?
 TypeInfoFactory 又是什麼?
 TypeInformation.of 和 TypeHint 是如何使用的呢?
 

接下來本文將逐步解密 Flink 的類型和序列化機制(TypeInformation)。

clipboard.png

Flink 的類型系統源碼位於 org.apache.flink.api.common.typeinfo 包,讓我們對上圖TypeInformation深入追蹤,看一下類的繼承關係圖:

clipboard.png

可以看到,上面兩個圖片是一一對應的,TypeInformation 類是描述一切類型的公共基類,它和它的所有子類必須可序列化(Serializable),因爲類型信息將會伴隨 Flink 的作業提交,被傳遞給每個執行節點。

由於 Flink 自己管理內存,採用了一種非常緊湊的存儲格式(見官方博文),因而類型信息在整個數據處理流程中屬於至關重要的元數據。

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