如何检查Spark RDD是否在内存中?

How to check if Spark RDD is in memory?

我有一个 org.apache.spark.rdd.RDD[MyClass] 的实例。 如何以编程方式检查实例是否为 persist\inmemory?

你想要RDD.getStorageLevel。如果为空,它将 return StorageLevel.None。然而,这只是在它被标记为缓存或不缓存时。如果你想要实际状态,你可以使用开发人员 api sc.getRDDStorageInfosc.getPersistentRDD

您可以调用rdd.getStorageLevel.useMemory来检查它是否在内存中,如下所示:

scala> myrdd.getStorageLevel.useMemory
res3: Boolean = false

scala> myrdd.cache()
res4: myrdd.type = MapPartitionsRDD[2] at filter at <console>:29

scala> myrdd.getStorageLevel.useMemory
res5: Boolean = true