如何检查我的RDD或数据帧是否被缓存?

时间:2015-09-07 07:40:00

标签: apache-spark

我创建了一个数据框说df1。我使用df1.cache()缓存了这个。如何检查是否已缓存? 还有一种方法可以让我看到所有缓存的RDD或数据帧。

5 个答案:

答案 0 :(得分:10)

您可以在RDD上调用getStorageLevel.useMemory以查明数据集是否在内存中。例如:

scala> val rdd = sc.parallelize(Seq(1,2))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[1] at parallelize at <console>:21

scala> rdd.getStorageLevel.useMemory
res9: Boolean = false

scala> rdd.cache()
res10: rdd.type = ParallelCollectionRDD[1] at parallelize at <console>:21

scala> rdd.getStorageLevel.useMemory
res11: Boolean = true

答案 1 :(得分:7)

@Arnab,

Did you find the function in Python?
Here is an example for DataFrame DF:

DF.cache()
print DF.is_cached

Hope this helps.
Ram

答案 2 :(得分:3)

从Spark(Scala)2.1.0开始,可以按如下方式检查数据帧:

Weather

答案 3 :(得分:1)

在Java和Scala中,以下方法可用于查找所有持久化的RDD: sparkContext.getPersistentRDDs()
Here is link to documentation.`

看起来这个方法在python中不可用:

https://issues.apache.org/jira/browse/SPARK-2141

但是可以使用这个短期黑客攻击:

sparkContext._jsc.getPersistentRDDs().items()

答案 4 :(得分:0)

您可以检索自Spark 1.4以来的RDDDataFrame的{​​{3}}以来的存储级别。

val storageLevel = rdd.getStorageLevel
val storageLevel = dataframe.storageLevel

然后您可以检查其存储位置,如下所示:

val isCached: Boolean = storageLevel.useMemory || storageLevel.useDisk || storageLevel.useOffHeap