火花水印花太多时间进行分组操作?

时间:2019-11-26 19:38:59

标签: apache-spark spark-structured-streaming

我尝试执行一些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个任务?任何帮助将不胜感激,谢谢!!

1 个答案:

答案 0 :(得分:1)

  

我在UI中分析了那里有200个任务,我不知道为什么要为此计算创建200个任务?

200个任务是groupBy之后的默认任务数。没什么异常。

  

但是我的问题是这花费了超过10分钟的时间,但是我的水印时间仅为“ 30秒”

事件时间水印的当前值取决于事件行中的值。事件可能只有在经过timestamp值的事件移动阈值的10分钟后才移动水印。

为了调试问题(如果有的话),您应该监视事件行的timestamp值和Spark应用程序的日志,因为当前水印阈值已打印到每批日志中。

相关问题