问题
您正在执行一个聚合使用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火花文档条件水印清洁聚合板岩为更多的信息。