【问题标题】:Spark structured streaming job parameters for writing .compact files用于编写 .compact 文件的 Spark 结构化流作业参数
【发布时间】:2021-11-21 13:04:54
【问题描述】:

我目前正在从文件源进行流式传输,但每次需要写入 .compact 文件时,都会出现很大的延迟峰值(约 5 分钟;.compact 文件约为 2.7GB)。这有点令人恼火,因为我试图将滚动窗口的延迟保持在阈值以下,并且每隔半小时就会在上面多花五分钟。

是否有任何用于调整 .compact 文件写入的 spark 参数?该系统的文档似乎很少。

【问题讨论】:

    标签: apache-spark pyspark spark-structured-streaming


    【解决方案1】:

    您似乎遇到了一个已报告的错误:SPARK-30462 - Structured Streaming _spark_metadata fills up Spark Driver memory when having lots of objects,该错误已在 Spark 3.1 版中得到修复。

    在该版本之前,没有其他配置可以防止压缩文件在使用大量内存时增量增长,从而导致压缩速度变慢。

    这里是结构化流中Release Note 的描述:

    简化文件流源和接收元数据日志的逻辑 (SPARK-30462)

    在此更改之前,每当 FileStreamSource/Sink 中需要元数据时,元数据日志中的所有条目都会反序列化到 Spark 驱动程序的内存中。通过此更改,Spark 将尽可能以简化的方式读取和处理元数据日志。

    【讨论】:

    • 啊,有趣 - 这个集群运行的是 3.1.1,但一两个月前才升级到它。我的猜测是 .compact 文件中仍然存在旧记录。
    【解决方案2】:

    我刚认输,答案就出现了。根据 Jacek Laskowski 关于 Spark 的书在这里:https://jaceklaskowski.gitbooks.io/spark-structured-streaming/content/spark-sql-streaming-properties.html

    有一个参数spark.sql.streaming.fileSource.log.compactInterval 控制这个间隔。但是,如果有人知道控制此行为的任何其他参数,请告诉我!

    【讨论】:

    • 对此的跟进:这些文件如此之大的原因是它们跟踪曾经见过的每个文件,并且在源被清理时不会被清理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 2019-01-10
    • 1970-01-01
    • 2021-04-28
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多