【问题标题】:Pyspark: Caching approaches in spark sqlPyspark:spark sql 中的缓存方法
【发布时间】:2021-01-28 04:25:55
【问题描述】:

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

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

df.cache()

df.createOrReplaceTempView("dummy_table")

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

df.createOrReplaceTempView("dummy_table")

sqlContext.cacheTable("dummy_table")

提前致谢。

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢@Arjoon 的解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多