Pyspark:spark sql 中的缓存方法

Som*_*haa 5 apache-spark apache-spark-sql pyspark

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

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

df.cache()

df.createOrReplaceTempView("dummy_table")

2> 将dataframe注册为临时表并缓存该表

df.createOrReplaceTempView("dummy_table")

sqlContext.cacheTable(“虚拟表”)

提前致谢。

Arj*_*oon 2

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

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

要回答您的问题是否比另一种具有性能优势,如果不了解您的整个工作流程以及如何(以及在​​何处)使用缓存的数据帧,将很难判断。我建议使用急切缓存,这样您就不必再次猜测数据帧何时(以及是否)被缓存。