代码之家  ›  专栏  ›  技术社区  ›  Ged

spark数据帧中数据的一致性视图

  •  0
  • Ged  · 技术社区  · 6 年前

    考虑到懒惰的评价、行动等,我的理解来自其他人,即:

    • 如果我重复访问数据帧,

      • 比如说,那是用一张蜂巢桌建造的,

        • (蜂巢表)会变异,
          • 然后,更改后的数据将显示在随后发出的每个数据帧操作上。

    除了复制到单独的不可变配置单元表之外,如何获得一致的数据帧和la oracle的读取一致性模型?

    我假设tempview可以解决问题,或者不是这样?实际上我不这么认为。性能问题。

    理想情况下,我希望dataframe将所有记录持久化,但这可能不是它与lazy协议一起工作的方式。

    1 回复  |  直到 6 年前
        1
  •  0
  •   user9902261    6 年前

    除了复制到单独的不可变配置单元表之外,如何获得一致的数据帧和la oracle的读取一致性模型?

    根本没有这样的选择。

    有人天真地建议 cache 以及强制评估:

    val df: DataFrame = ???
    df.cache    // Default StorageLevel - MEMORY_AND_DISK
    df.foreach(_ => ())
    

    但它只是没有提供所需的保证,特别是在节点故障的情况下。你可以通过设置 StorageLevel MEMORY_AND_DISK_2 ,但它仍然会导致静默正确性错误。

    所以直言不讳-Spark不是一个数据库,不要把它当成一个数据库。如果您已经使用了配置单元和可变状态,那么跳过spark并使用配置单元的acid和事务选项。