【发布时间】:2021-02-01 20:10:23
【问题描述】:
我试过下面的代码,rdd2 只会计算一次。剂量 spark 缓存所有 shuffle rdd 自动?
我注意到 Dataframe shuffle 结果不会自动缓存。
val rdd2: RDD[(String, Int)] = spark.sparkContext.parallelize(Array("jan"))
.map(x => {
println("---")
(x, 1)
}).reduceByKey(_ + _)
rdd2.count()
rdd2.count()
【问题讨论】:
-
nope spark 是惰性求值的,这意味着只有动作(不会生成另一个 rdd)会触发计算,就像您的计数一样,除非您明确调用 .cache(),否则不会缓存中间 rdd .persist()
标签: apache-spark