官术网_书友最值得收藏!

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)。

主站蜘蛛池模板: 克拉玛依市| 泰来县| 库伦旗| 罗江县| 靖边县| 涞源县| 泊头市| 上杭县| 云安县| 镇平县| 广水市| 枞阳县| 名山县| 嘉禾县| 来安县| 辽阳县| 洛隆县| 邛崃市| 顺义区| 葵青区| 万安县| 土默特左旗| 大连市| 叙永县| 吴忠市| 广昌县| 彰化市| 荣昌县| 嘉义县| 唐河县| 萝北县| 桂东县| 桑日县| 股票| 青冈县| 青海省| 运城市| 阿拉善盟| 尼木县| 柯坪县| 侯马市|