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


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