Apache spark 如何检查数据帧之前是否已缓存/持久化?
对于spark的RDD对象,这非常简单,因为它公开了一个getStorageLevel方法,但DF似乎没有公开任何类似的方法。有人吗?您可以使用spark 2中的Apache spark 如何检查数据帧之前是否已缓存/持久化?,apache-spark,spark-dataframe,Apache Spark,Spark Dataframe,对于spark的RDD对象,这非常简单,因为它公开了一个getStorageLevel方法,但DF似乎没有公开任何类似的方法。有人吗?您可以使用spark 2中的目录(org.apache.spark.sql.Catalog.Catalog)检查是否缓存了数据帧 代码示例: val sparkSession = SparkSession.builder. master("local") .appName("example") .getOrCreate()
目录(org.apache.spark.sql.Catalog.Catalog)
检查是否缓存了数据帧
代码示例:
val sparkSession = SparkSession.builder.
master("local")
.appName("example")
.getOrCreate()
val df = sparkSession.read.csv("src/main/resources/sales.csv")
df.createTempView("sales")
//interacting with catalog
val catalog = sparkSession.catalog
//print the databases
catalog.listDatabases().select("name").show()
// print all the tables
catalog.listTables().select("name").show()
// is cached
println(catalog.isCached("sales"))
df.cache()
println(catalog.isCached("sales"))
使用上述代码,您可以列出所有表,并检查是否缓存了表
您可以检查工作代码示例如果缓存了数据帧,则新的.cache或.persist不会带来任何开销。为什么您需要知道它是否被缓存?为什么不
df.rdd.getStorageLevel
?为什么需要df.getStorageLevel或其他类似is缓存的方法?对此有什么具体要求吗?是的,你是对的,我查过代码,但没有找到这样的代码method@DenieldePaula为什么很难理解这项调查的价值?再次调用.cache()
不会告诉您:(a)它是否已被缓存(或者是否出现了问题)。(b)这次是否缓存了它(或者是否出现了问题……)。这是一个好问题。