结构化流中的水印是否始终使用处理时间或事件时间或两者设置?
答案 0 :(得分:3)
在结构化流媒体中2.2根据Dataset.withWatermark运算符中eventTime
列定义的事件时间跟踪流水印。
withWatermark 为此数据集定义事件时间水印。水印跟踪一个时间点,在此之前我们假设不再有后期数据到达。
默认情况下,它会为您提供事件时间水印。
但是您的初始数据集最初可能没有事件时间列,因此您可以在处理时使用current_date
或current_timestamp
函数或其他方式自动生成一个。这将为您提供处理时间水印(基于自定义生成的列)。
在使用KeyValueGroupedDataset.flatMapGroupsWithState的最通用解决方案中,您可以预先定义策略或编写自定义策略。这就是为什么他们称之为Arbitrary Stateful Aggregations in Structured Streaming的解决方案。
flatMapGroupsWithState 将给定函数应用于每组数据,同时保持用户定义的每组状态。