微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pyspark:Spark sql中的缓存方法

如何解决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")

要回答您的问题是否有一个相对于另一个的性能优势,在不了解整个工作流程以及如何(以及在​​何处)使用缓存的数据帧的情况下很难分辨。我建议使用急速缓存,这样您就不必再猜测何时(以及是否缓存数据帧)了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。