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


Python pyspark session_window用法及代码示例


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

用法:

pyspark.sql.functions.session_window(timeColumn, gapDuration)

在给定时间戳指定列的情况下生成会话窗口。会话窗口是动态窗口之一,这意味着窗口的长度根据给定的输入而变化。会话窗口的长度定义为“会话最新输入的时间戳+间隙持续时间”,因此当新的输入绑定到当前会话窗口时,会话窗口的结束时间可以根据新的输入进行扩展。 Windows 可以支持微秒精度。不支持几个月级的 Windows。对于流式查询,您可以使用函数 current_timestamp 生成处理时间窗口。 gapDuration 以字符串形式提供,例如‘1秒’、‘1天12小时’、‘2分钟’。有效的间隔字符串是‘week’, ‘day’, ‘hour’, ‘minute’, ‘second’, ‘millisecond’, ‘microsecond’。它也可以是一个列,可以根据输入行动态评估间隙持续时间。默认情况下,输出列将是一个名为 ‘session_window’ 的结构,其中包含嵌套列 ‘start’ 和 ‘end’,其中 ‘start’ 和 ‘end’ 将属于 pyspark.sql.types.TimestampType

版本 3.2.0 中的新函数。

参数

timeColumnColumn

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

gapDuration Column 或 str

指定会话超时的列或字符串。它可以是静态值,例如10 minutes1 second 或根据输入行动态指定间隙持续时间的表达式/UDF。

例子

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

相关用法


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