當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。