Pyspark:spark-sql中的缓存方法



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

1>缓存原始数据帧,然后将其注册为临时表

df.cache((

df.createOrReplaceTempView("dummy_table"(

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

df.createOrReplaceTempView("dummy_table"(

sqlContext.cacheTable("dummy_table"(

提前谢谢。

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

sqlContext.cacheTable("dummy_table")是一个急切的缓存,这意味着该表将在调用命令时被缓存。等效的是:spark.sql("CACHE TABLE dummy_table")

要回答您的问题,如果不了解您的整个工作流程以及缓存的数据帧是如何使用的(以及在哪里使用(,就很难判断一个数据帧是否比另一个有性能优势。我建议使用渴望缓存,这样您就不必事后猜测数据帧何时(以及是否(被缓存。

最新更新