嗨@Alexander Plepler,您不能使用append模式聚合DataFrame沒有水印。這是通過設計。
你必須申請一個水印DataFrame如果您想要使用append模式聚合DataFrame。
聚合必須有一個事件時間列或一個窗口的事件時間列。
組數據窗口和詞,計算每組的數量。
.withWatermark()必須在同一列中使用的時間戳列聚合。
示例代碼顯示了這是如何做到的。
值<類型>替換為你處理的元素。例如,您將使用行如果你正在處理的行。
替換值<單詞>模式的流DataFrame}{時間戳:時間戳,詞:字符串。
JAVA
數據集<類型> windowedCounts = <單詞> .withWatermark(“時間戳”,“十分鍾”).groupBy (functions.window (words.col(“時間戳”),“十分鍾”,“5分鍾”),words.col(“單詞”)).count ();
PYTHON
windowedCounts = <單詞> \ .withWatermark(“時間戳”,“十分鍾”)\ .groupBy(窗口(單詞。時間戳,“十分鍾”,“5分鍾”)、words.word) \ .count ()
SCALA
進口spark.implicits。_ val windowedCounts = <單詞> .withWatermark(“時間戳”,“十分鍾”).groupBy(窗口(美元“時間戳”,“十分鍾”,“5分鍾”),“單詞”美元).count ()
你必須調用.withWatermark()之前執行聚合。否則失敗,並顯示一條錯誤消息。
例如,
df.groupBy(“時間”).count ()。withWatermark(“時間”、“1分”)
返回一個例外。
請參考Apache火花™文檔條件水印清潔聚合板岩為更多的信息。