【问题标题】:update Parquet file format更新 Parquet 文件格式
【发布时间】:2022-11-24 04:26:36
【问题描述】:

我的要求是读取它并将另一组镶木地板数据生成到另一个 ADLS 文件夹中。

我需要将它放入 spark 数据帧并执行更新吗?

【问题讨论】:

    标签: parquet upsert


    【解决方案1】:

    Parquet 与任何其他文件格式一样。您必须覆盖文件才能执行插入、更新和删除。它不像数据库那样具有 ACID 属性。

    1 - 我们可以将 SET 属性与 spark 数据框一起使用来完成你想要的。但是,它在行和列级别进行比较。不如 ANSI SQL 好。

    https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-setops.html

    2 - 我们可以将目标目录中的数据保存为 DELTA 文件。大多数人都在使用 DELTA,因为它具有像数据库一样的 ACID 属性。请参阅合并声明。它允许更新和插入。

    https://docs.delta.io/latest/delta-update.html

    此外,我们可以在反转比赛时进行软删除。

    增量文件(表)的好处是我们可以按日期对每日文件加载进行分区。因此,我们可以使用时间旅行来查看昨天与今天发生的情况。

    https://www.databricks.com/blog/2019/02/04/introducing-delta-time-travel-for-large-scale-data-lakes.html

    3 - 如果您不关心历史记录和软删除,完成此任务的最简单方法是将旧文件归档到目标目录中,然后将新文件从源目录复制到目标目录。

    【讨论】:

    • 感谢您提供详细的选项。关于上面的 #2,我的来源将数据作为 parquet 发送给我,所以你是要我将 parquet 读入 spark,然后以 delta 格式存储到我的目的地吗?
    • 那就是如果你想有能力回到过去(时间旅行)。否则,只需存档旧的并复制新的。无论如何,您必须对保留数据的时间设置一个时间限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2015-05-04
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    相关资源
    最近更新 更多