- Flink內核原理與實現
- 馮飛 崔鵬云 陳冠華編著
- 482字
- 2021-04-14 11:30:34
3.2 數據流元素
數據流元素在Flink中叫作StreamElement,有數據記錄StreamRecord、延遲標記Latency Marker、Watermark、流狀態標記StreamStatus這4種,分別有各自不同的用途。
在執行層面上,4種數據流元素都被序列化成二進制數據,形成混合的數據流,在算子中將混合數據流中的數據流元素反序列化出來,根據其類型分別進行處理。
StreamElement類體系如圖3-6所示。

圖3-6 StreamElement類體系
1. StreamRecord
StreamRecord表示數據流中的一條記錄(或者叫作一個事件),也叫作數據記錄。
StreamRecord包含如下內容。
1)數據的值本身。
2)事件戳(可選)。
2. LatencyMarker
LatencyMarker用來近似評估延遲,LatencyMarker在Source中創建,并向下游發送,繞過業務處理邏輯,在Sink節點中使用LatencyMarker估計數據在整個DAG圖中流轉花費的時間,用來近似地評估總體上的處理延遲。
LatencyMarker包含如下信息。
1)周期性地在數據源算子中創造出來的時間戳。
2)算子編號。
3)數據源算子所在的Task編號。
3. Watermark
Watermark是一個時間戳,用來告訴算子所有時間早于等于Watermark的事件或記錄都已經到達,不會再有比Watermark更早的記錄,算子可以根據Watermark觸發窗口的計算、清理資源等。后邊有詳細介紹。
4. StreamStatus
用來通知Task是否會繼續接收到上游的記錄或者Watermark。StreamStatus在數據源算子中生成,向下游沿著Dataflow傳播。
StreamStatus可以表示兩種狀態:
1)空閑狀態(IDLE)。
2)活動狀態(ACTIVE)。
- 虛擬儀器設計測控應用典型實例
- Learning Microsoft Azure Storage
- Java開發技術全程指南
- 可編程控制器技術應用(西門子S7系列)
- 機器人編程實戰
- PyTorch Deep Learning Hands-On
- 永磁同步電動機變頻調速系統及其控制(第2版)
- 基于敏捷開發的數據結構研究
- Mastering Geospatial Analysis with Python
- Python文本分析
- Linux Shell Scripting Cookbook(Third Edition)
- PowerPoint 2010幻燈片制作高手速成
- 企業級Web開發實戰
- 軟測之魂
- Mastering DynamoDB