不支持添加输出没有水印

添加输出模式不支持聚合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火花文档条件水印清洁聚合板岩为更多的信息。

这篇文章有用吗?