Spark caching difference between 2.0.2 and 2.1.1

Viewed 305

I'm a bit confused with spark caching behavior. I want to compute dependent dataset (b), cache it and unpersist source dataset(a) - here is my code:

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")}")

When using spark 2.0.2 it works as expected:

Is a cached: true
Is b cached: true
Is b cached after a was unpersisted: true

But on 2.1.1:

Is a cached: true
Is b cached: true
Is b cached after a was unpersisted: false

How can i archieve the same behavior in 2.1.1?

Thank you.

1 Answers
Related