問題
您正在執行一個聚合使用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火花文檔條件水印清潔聚合板岩為更多的信息。