2017-09-04 17 views

回答

3

在結構化流式傳輸2.2中,流式水印是根據Dataset.withWatermark運算符中的eventTime列所定義的事件時間來跟蹤的。

withWatermark定義此數據集的事件時間水印。水印追蹤一個時間點,在這個時間點之前,我們假設沒有更多的遲到數據將要到達。

默認情況下會爲您提供事件時間水印。

但是您的初始數據集最初沒有事件時間列,因此您可以在處理時使用current_datecurrent_timestamp函數或其他方式自動生成一個。這會給你處理時間水印(基於自定義生成的列)。

在使用KeyValueGroupedDataset.flatMapGroupsWithState的最通用解決方案中,您可以預先定義策略或編寫自定義策略。這就是爲什麼他們稱它爲Arbitrary Stateful Aggregations in Structured Streaming的解決方案。

flatMapGroupsWithState適用給定函數對每個組的數據,同時保持用戶定義的每個組的狀態。

相關問題