gpt4 book ai didi

apache-spark - Spark 的数据集不持久行为

转载 作者:行者123 更新时间:2023-12-04 03:31:33 27 4
gpt4 key购买 nike

最近我看到了 Spark 的一些奇怪行为。

我的应用程序中有一个管道,我在其中操作一个大数据集 - 伪代码:

val data = spark.read (...)
data.join(df1, "key") //etc, more transformations
data.cache(); // used to not recalculate data after save
data.write.parquet() // some save

val extension = data.join (..) // more transformations - joins, selects, etc.
extension.cache(); // again, cache to not double calculations
extension.count();
// (1)
extension.write.csv() // some other save

extension.groupBy("key").agg(some aggregations) //
extension.write.parquet() // other save, without cache it will trigger recomputation of whole dataset

但是,当我调用 data.unpersist()即到位 (1) , Spark 从存储中删除所有数据集,还有 extension不是我试图取消持久化的数据集的数据集。

这是预期的行为吗?如何通过 unpersist 释放一些内存在旧数据集上而不保留“链中的下一个”的所有数据集?

我的设置:
  • Spark 版本:当前 master,RC for 2.3
  • 斯卡拉:2.11
  • Java:OpenJDK 1.8

  • 问题类似于 Understanding Spark's caching ,但在这里我在 unpersist 之前做了一些 Action 。起初我计算所有内容,然后保存到存储中 - 我不知道缓存在 RDD 中是否像在数据集中一样工作

    最佳答案

    这是 Spark 缓存的预期行为。 Spark 不想保留无效的缓存数据。它完全删除了所有缓存的计划引用数据集。

    这是为了确保查询是正确的。在示例中,您正在创建扩展 dataset来自缓存数据集 data .现在如果数据集 data本质上是非持久化扩展数据集不能再依赖缓存数据集 data .

    Here是他们所做的修复的拉取请求。你可以看到类似的JIRA

    关于apache-spark - Spark 的数据集不持久行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48305081/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com