我创建了一个数据框说df1。我使用df1.cache()缓存了这个。如何检查是否已缓存? 还有一种方法可以让我看到所有缓存的RDD或数据帧。
答案 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以来的RDD
和DataFrame
的{{3}}以来的存储级别。
val storageLevel = rdd.getStorageLevel
val storageLevel = dataframe.storageLevel
然后您可以检查其存储位置,如下所示:
val isCached: Boolean = storageLevel.useMemory || storageLevel.useDisk || storageLevel.useOffHeap