ウォーターマーク内の重複を削除する

透かし内の特定の列のみを考慮して、重複する行が削除された新しい DataFrame を返します。

構文

dropDuplicatesWithinWatermark(subset: Optional[List[str]] = None)

パラメーター

パラメーター タイプ 説明
subset 列名の一覧 (省略可能) 重複比較に使用する列の一覧 (既定の [すべての列])。

返品

DataFrame: 重複のない DataFrame。

メモ

これはストリーミングデータフレームでのみ機能し、入力データフレームの透かしは withWatermarkを介して設定する必要があります。

ストリーミング DataFrame の場合、これにより、トリガー間のすべてのデータが中間状態として保持され、重複した行が削除されます。 状態は、セマンティックを保証するために保持されます。"イベントは、最も早いイベントと最新のイベントの時間距離が基準値の遅延しきい値よりも小さい限り重複除去されます。"ユーザーは、重複したイベント間の最大タイムスタンプ差よりも長い透かしの遅延しきい値を設定することをお勧めします。

注: 基準値より古い遅延データは削除されます。

Spark Connect をサポートします。

例示

from pyspark.sql import Row
from pyspark.sql.functions import timestamp_seconds
df = spark.readStream.format("rate").load().selectExpr(
    "value % 5 AS value", "timestamp")
df.select("value", df.timestamp.alias("time")).withWatermark("time", '10 minutes')
# DataFrame[value: bigint, time: timestamp]

df.dropDuplicatesWithinWatermark()

df.dropDuplicatesWithinWatermark(['value'])