Apache spark Pyspark:sparksql中的缓存方法

Apache spark Pyspark:sparksql中的缓存方法,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我需要了解在使用spark sql时,以下两种缓存方法之间是否有任何区别,以及一种方法相对于另一种方法是否有任何性能优势(考虑到构建数据帧的成本很高,我想多次重用它/执行许多操作) 1>在将原始数据帧注册为临时表之前,先缓存该数据帧 df.cache() df.createOrReplaceTempView(“虚拟表格”) 2>将数据帧注册为临时表并缓存该表 df.createOrReplaceTempView(“虚拟表格”) cacheTable(“虚拟表”) 提前感谢。df.cache()是

我需要了解在使用spark sql时,以下两种缓存方法之间是否有任何区别,以及一种方法相对于另一种方法是否有任何性能优势(考虑到构建数据帧的成本很高,我想多次重用它/执行许多操作)

1>在将原始数据帧注册为临时表之前,先缓存该数据帧

df.cache()

df.createOrReplaceTempView(“虚拟表格”)

2>将数据帧注册为临时表并缓存该表

df.createOrReplaceTempView(“虚拟表格”)

cacheTable(“虚拟表”)

提前感谢。

df.cache()是延迟缓存,这意味着只有在触发下一个操作时才会发生缓存

sqlContext.cacheTable(“dummy_table”)
是一个即时缓存,这意味着在调用命令时将缓存该表。与此等价的是:
spark.sql(“缓存表虚拟表”)


为了回答您的问题,如果不了解您的整个工作流以及如何(以及在何处)使用缓存的数据帧,就很难判断两者之间是否存在性能优势。我建议使用渴望缓存,这样您就不必猜测数据帧何时(以及是否)被缓存。

感谢@Arjoon的解释