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


Python pyspark window用法及代码示例


本文简要介绍 pyspark.sql.functions.window 的用法。

用法:

pyspark.sql.functions.window(timeColumn, windowDuration, slideDuration=None, startTime=None)

给定时间戳指定列,将行分桶到一个或多个时间窗口中。窗口开始是包含的,但窗口结束是排除的,例如12:05 将在窗口 [12:05,12:10) 中,但不在 [12:00,12:05) 中。 Windows 可以支持微秒精度。不支持以月为单位的 Windows。

时间列必须是 pyspark.sql.types.TimestampType

持续时间以字符串形式提供,例如“1 秒”、“1 天 12 小时”、“2 分钟”。有效的间隔字符串是‘week’, ‘day’, ‘hour’, ‘minute’, ‘second’, ‘millisecond’, ‘microsecond’。如果未提供slideDuration,则窗口将是翻滚窗口。

startTime 是相对于 1970-01-01 00:00:00 UTC 开始窗口间隔的偏移量。例如,为了让每小时滚动的窗口在整点后 15 分钟开始,例如12:15-13:15, 13:15-14:15… 提供 startTime 作为 15 minutes

默认情况下,输出列将是一个名为 ‘window’ 的结构,其中包含嵌套列 ‘start’ 和 ‘end’,其中 ‘start’ 和 ‘end’ 将属于 pyspark.sql.types.TimestampType

2.0.0 版中的新函数。

参数

timeColumnColumn

用作按时间窗口化的时间戳的列或表达式。时间列必须是 TimestampType。

windowDurationstr

指定窗口宽度的字符串,例如10 minutes1 second。检查 org.apache.spark.unsafe.types.CalendarInterval 的有效持续时间标识符。请注意,持续时间是固定的时间长度,并且不会根据日历随时间变化。例如,1 day 始终表示 86,400,000 毫秒,而不是日历日。

slideDurationstr,可选

每个 slideDuration 都会生成一个新窗口。必须小于或等于 windowDuration 。检查 org.apache.spark.unsafe.types.CalendarInterval 以获取有效的持续时间标识符。这个持续时间同样是绝对的,不会根据日历而变化。

startTimestr,可选

相对于 1970-01-01 00:00:00 UTC 的偏移量,用于启动窗口间隔。例如,为了让每小时滚动的窗口在整点后 15 分钟开始,例如12:15-13:15, 13:15-14:15… 提供 startTime 作为 15 minutes

例子

>>> df = spark.createDataFrame([("2016-03-11 09:00:07", 1)]).toDF("date", "val")
>>> w = df.groupBy(window("date", "5 seconds")).agg(sum("val").alias("sum"))
>>> w.select(w.window.start.cast("string").alias("start"),
...          w.window.end.cast("string").alias("end"), "sum").collect()
[Row(start='2016-03-11 09:00:05', end='2016-03-11 09:00:10', sum=1)]

相关用法


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