SPARK数据框中数据的一致视图

时间:2018-06-06 08:33:27

标签: apache-spark

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

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

    • 是根据Hive表构建的,

      • 那个(Hive表)会发生变异,
        • 然后,此更改的数据将显示在随后发布的每个数据帧操作上。

除了复制到单独的非可变Hive表之外,我如何获得一致的数据帧,然后是一个ORACLE的读一致性模型?

我假设TempView会解决问题,还是不是这样?其实我觉得不是。性能问题。

理想情况下,我希望数据帧将所有记录保持不变,但可能不是它与惰性协议的工作方式。

1 个答案:

答案 0 :(得分:0)

  

除了复制到单独的非可变Hive表之外,如何获得一致的数据帧,然后获得la ORACLE的读一致性模型?

根本没有这样的选择。

天真地可以建议cache并强制评估:

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

但它不提供必要的保证,特别是在节点故障的情况下。您可以通过将StorageLevel设置为MEMORY_AND_DISK_2来提高可靠性,但仍可能导致无效的正确性错误。

所以直言不讳 - Spark不是一个数据库,不要试图像对待它一样。如果您已经使用Hive和可变状态,那么跳过Spark并使用Hive的ACID和事务选项。