【问题标题】:Spark 2.0+ Even the dataframe is cached, if one of its source changes, it would recompute?Spark 2.0+ 即使数据帧被缓存,如果它的源之一发生变化,它会重新计算吗?
【发布时间】:2019-05-19 02:18:17
【问题描述】:

这是我的用例。

  1. 有多个来源 df1 到 df4,df3 代表一个现有的 hive 表
  2. 构建一个从 df1 到 df4 的 df5
  3. 将 df5 插入/附加到该现有配置单元表。
  4. 将 df5 保存到其他位置。

问题是第 4 步没有保存任何内容。 这是否意味着在第 3 步之后, df3 会改变? 我已经为 df1 到 df5 使用了 cache()。但看起来如果源已更改,df5 会重新计算 我检查了 Spark Web UI 存储。所有数据帧都 100% 缓存。

【问题讨论】:

    标签: scala apache-spark dataframe caching


    【解决方案1】:

    一般来说,您不应该在任何一个方向上都依赖这种行为。 Spark 中没有可以跟踪任意数据源更改的机制,因此获取更改通常是相当偶然的,不能被视为理所当然。

    同时 Spark 可以选择在许多不同的场景中重新计算。

    在某些情况下,Spark 还可以检测更改(通常是从文件加载数据时)并抛出异常。

    【讨论】:

      猜你喜欢
      • 2019-11-27
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2019-05-23
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多