首页 > 解决方案 > k8s 上的 Spark 结构化流

问题描述

我们正在使用 spark 2.4.3 运行结构化流处理过程,该过程从 kafka 读取数据,转换数据(使用 udf 展平并创建一些列),然后将数据写回 kafka 到不同的主题。流正在处理时间是每两分钟。10 到 12 小时后,我们注意到我们的 pod 由于高内存消耗而下降。正如我上面解释的那样,我们没有聚合,也没有在数据集上使用持久化。我们注意到的是堆内存在不断增长。任何想法?

标签: apache-sparkspark-structured-streaming

解决方案


我们找到了问题的解决方案,花了一段时间,显然 spark 保存了用于 UI 的对象,并且这个集合不断增长,尽管我们将 spark 配置为使用 spark.ui.enabled: false 运行。解决方案是使用配置 parma spark.sql.ui.retainedExecutions 来限制它。spark sql ui data 我们很容易重现内存问题,因为我们的数据集有大约 300 列,所以 UI 保存的数据非常大。


推荐阅读