我尝试执行一些groupby操作,以生成火花结构化的流,它按预期提供了输出,但是我的问题是它花费了10多分钟,但是我的水印时间仅为“ 30秒”,低于我尝试的代码< / p>
Dataset<Row> windowedCounts = lines
.withWatermark("timestamp", "30 seconds")
.groupBy("value")
.count();
我尝试了如下所述的窗口操作
Dataset<Row>windowedCounts = lines
.withWatermark("timestamp", "30 seconds")
.groupBy(
functions.window(lines.col("timestamp"), "30 seconds", "10 seconds"),
lines.col("value"))
.count();
我在UI中分析了那里有200个任务,我不知道为什么要为此计算创建200个任务?任何帮助将不胜感激,谢谢!!
答案 0 :(得分:1)
我在UI中分析了那里有200个任务,我不知道为什么要为此计算创建200个任务?
200个任务是groupBy
之后的默认任务数。没什么异常。
但是我的问题是这花费了超过10分钟的时间,但是我的水印时间仅为“ 30秒”
事件时间水印的当前值取决于事件行中的值。事件可能只有在经过timestamp
值的事件移动阈值的10分钟后才移动水印。
为了调试问题(如果有的话),您应该监视事件行的timestamp
值和Spark应用程序的日志,因为当前水印阈值已打印到每批日志中。