gpt4 book ai didi

apache-spark - Spark 流中的缓存会提高性能吗

转载 作者:行者123 更新时间:2023-12-04 04:13:45 25 4
gpt4 key购买 nike

所以我在 kafka 流中的同一个 rdd 上执行多个操作。缓存该 RDD 会提高性能吗?

最佳答案

在同一个数据流上运行多个操作时,cache将显着提高性能。这可以在 Spark UI 上观察到:

不使用 cache , dstream 上的每次迭代都将花费相同的时间,因此在每个批处理间隔中处理数据的总时间将与数据的迭代次数成线性关系:
Spark Streaming no cache

cache使用,第一次执行 RDD 上的转换管道时,RDD 将被缓存,并且该 RDD 上的每次后续迭代将只花费一小部分时间来执行。

(在此截图中,通过减少分区数量,同一作业的执行时间从 3 秒进一步减少到 0.4 秒)
Spark Streaming with cache

而不是使用 dstream.cache我建议使用 dstream.foreachRDDdstream.transform直接访问底层 RDD 并应用 persist手术。我们使用匹配 persistunpersist围绕迭代代码尽快清理内存:

dstream.foreachRDD{rdd =>
rdd.cache()
col.foreach{id => rdd.filter(elem => elem.id == id).map(...).saveAs...}
rdd.unpersist(true)
}

否则需要等待 spark.cleaner.ttl上配置的时间来清理内存。

请注意 spark.cleaner.ttl 的默认值是无限的,不推荐用于生产 24x7 Spark Streaming 作业。

关于apache-spark - Spark 流中的缓存会提高性能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com