使用 window 函数后无法理解时间的输出值?

Not able to understand the output value of time after using the window function?

我试图找出我的数据帧值所在的时间 window,但我无法理解输出。我无法理解: window(timeColumn, windowDuration, slideDuration=None, startTime=None) 正在工作。

这是代码:

df = spark.createDataFrame([("0000-01-01 00:00:00", 1),("1970-01-01 19:02:34", 1),("1970-01-01 19:01:29", 1)]).toDF("date", "val")
from pyspark.sql.functions import window
w = df.groupBy(window("date", windowDuration="55 seconds")).sum("val").alias("sum")
display(w)

使用数据块。

谁能告诉我输出并解释它是如何工作的。

根据时间戳列,window 将创建一个包含输入时间戳的“存储桶”(开始时间和结束时间)。桶的“大小”取决于 windowDuration 持续时间参数。

例如,您有一个时间戳 2021-10-29 11:13:51 并且您将 window 函数与 windowDuration = "15 minutes" 一起应用,新列将是一个包含 start = "2021-10-29 11:00:00"end = "2021-10-29 11:15:00"。在开始和结束之间,您有 15 分钟的时间,您的时间戳包含在中间。

在您当前的代码中,您使用 windowDuration="55 seconds"。根据文档:

The startTime is the offset with respect to 1970-01-01 00:00:00 UTC with which to start window intervals.

表示从1970-01-0100:00:00日期开始,将创建windows,长度为55秒。第一个将是 1970-01-01 00:00:00 ==> 1970-01-01 00:00:55,第二个将是 1970-01-01 00:00:55 ==> 1970-01-01 00:01:50,等等... 它有效,但与 1 minutes 参数相比,开始和结束并不规则。