3
スパークキャッシングの動作とちょっと混乱しています。2.0.2と2.1.1のスパークキャッシングの違い
val spark = SparkSession.builder().appName("test").master("local[4]").getOrCreate()
import spark.implicits._
val a = spark.createDataset(Seq(("a", 1), ("b", 2), ("c", 3)))
a.createTempView("a")
a.cache
println(s"Is a cached: ${spark.catalog.isCached("a")}")
val b = a.filter(x => x._2 < 3)
b.createTempView("b")
// calling action
b.cache.first
println(s"Is b cached: ${spark.catalog.isCached("b")}")
spark.catalog.uncacheTable("a")
println(s"Is b cached after a was unpersisted: ${spark.catalog.isCached("b")}")
火花を使用すると、期待どおりに動作します2.0.2:
Is a cached: true
Is b cached: true
Is b cached after a was unpersisted: true
を - 私は依存データセット(B)を、計算したいキャッシュそれとunpersistソースデータセットは、(a)はここに私のコードです
しかし、2.1.1に:
Is a cached: true
Is b cached: true
Is b cached after a was unpersisted: false
は、どのように私は2.1.1で同じ動作をarchieveことができますか?
ありがとうございます。
はい、スパーク人は、これは「設計によって行動であると言う - https://issues.apache.org/jira/browse/SPARK-21478。それはもはや必要ではない大容量のキャッシュデータセットをどう扱うべきか明確ではありません。何か案は? – yanik1984