不支持添加輸出沒有水印

添加輸出模式不支持聚合DataFrames沒有水印。

寫的亞當Pavlacka

去年發表在:2022年5月17日

問題

您正在執行一個聚合使用append模式和異常返回錯誤消息。

添加輸出模式不支持當流聚合流DataFrames /數據集沒有水印

導致

你不能使用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火花文檔條件水印清潔聚合板岩為更多的信息。

這篇文章有用嗎?