gpt4 book ai didi

apache-spark - 为多次引用该数据帧的单个 Action Spark 应用程序缓存数据帧是否有效?

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

我对 Spark 的缓存机制有点困惑。

假设我有一个 Spark 应用程序,在多个转换结束时只有一个操作。其中假设我有一个数据帧 A 并且我对其应用了 2-3 转换,创建了多个数据帧,最终有助于创建将保存到磁盘的最后一个数据帧。

例子 :

val A=spark.read() // large size
val B=A.map()
val C=A.map()
.
.
.
val D=B.join(C)
D.save()

那么我是否需要缓存数据帧 A 以提高性能?

提前致谢。

最佳答案

是的,你是对的。

您应该将 A 缓存为用于 B 和 C 作为输入。 DAG 可视化将显示重用或返回源的程度(在这种情况下)。如果您有一个嘈杂的集群,则可能会发生一些溢出到磁盘的情况。

另请参阅此处的最佳答案 (Why) do we need to call cache or persist on a RDD

然而,我正在寻找跳过的阶段,愚蠢的我。但其他内容如下所示。

以下代码类似于您自己的代码:

val aa = spark.sparkContext.textFile("/FileStore/tables/filter_words.txt")//.cache
val a = aa.flatMap(x => x.split(" ")).map(_.trim)
val b=a.map(x => (x,1))
val c=a.map(x => (x,2))
val d=b.join(c)
d.count

使用 .cache 查看 UI

enter image description here

并且没有 .cache

enter image description here

QED:所以,.cache 有好处。否则就没有意义了。此外,在某些情况下,2 次读取可能会导致不同的结果。

关于apache-spark - 为多次引用该数据帧的单个 Action Spark 应用程序缓存数据帧是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59178418/

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