当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyspark DataFrame.withWatermark用法及代码示例


本文简要介绍 pyspark.sql.DataFrame.withWatermark 的用法。

用法:

DataFrame.withWatermark(eventTime, delayThreshold)

为此 DataFrame 定义事件时间水印。水印跟踪一个时间点,在此之前我们假设不再有迟到的数据到达。

Spark 将出于多种目的使用此水印:

  • 知道何时可以完成给定的时间窗口聚合,从而可以在使用不允许更新的输出模式时发出。

  • 为了最小化我们需要为on-going 聚合保留的状态量。

当前水印是通过查看查询中所有分区中看到的 MAX(eventTime) 减去用户指定的 delayThreshold 来计算的。由于跨分区协调此值的成本,实际使用的水印只能保证至少比实际事件时间晚delayThreshold。在某些情况下,我们可能仍会处理晚于 delayThreshold 的记录。

2.1.0 版中的新函数。

参数

eventTimestr

包含行的事件时间的列的名称。

delayThresholdstr

等待数据迟到的最小延迟,相对于以间隔形式处理的最新记录(例如“1分钟”或“5小时”)。

注意

这个 API 正在发展。

>>> from pyspark.sql.functions import timestamp_seconds
>>> sdf.select(
...    'name',
...    timestamp_seconds(sdf.time).alias('time')).withWatermark('time', '10 minutes')
DataFrame[name: string, time: timestamp]

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.sql.DataFrame.withWatermark。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。