【问题标题】:Deduplicate Delta Lake Table去重 Delta Lake 表
【发布时间】:2021-01-27 23:41:20
【问题描述】:

我在 Azure 中有一个 Delta Lake 表。我正在使用 Databricks。当我们添加新条目时,我们使用合并来防止重复项进入表中。但是,重复项确实进入了表格。我不确定它是怎么发生的。可能没有正确设置合并条件。

但是发生了重复项。有什么方法可以检测和删除表中的重复项?我找到的所有文档都显示了如何在合并之前对数据集进行重复数据删除。一旦重复项已经存在,就什么都没有了。如何删除重复项?

谢谢

【问题讨论】:

    标签: apache-spark databricks delta-lake


    【解决方案1】:

    如果目标表中存在重复项,您唯一的选择是:

    1. 使用 SQL DELETE 语句从目标表中手动删除重复的行
    2. 创建目标表的去重副本并重命名两个表(去重副本和原始目标),以确保将去重副本作为主表。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 请解释您的答案,以便下一位用户知道为什么此解决方案对您有效。另外,总结一下您的答案,以防链接将来停止工作。
      【解决方案3】:

      为了删除重复项,您可以按照以下方法:

      1. 创建一个单独的表,该表是具有重复记录的表的副本。
      2. 删除第一个有重复记录的表。 (元数据信息加物理文件)
      3. 编写 python 脚本或 scala 代码,使用 dropDuplicates 函数或通过从您在步骤 1 中创建的表中读取数据并重新创建您在步骤中删除的表来定义唯一记录的任何自定义逻辑来删除重复记录2.

      一旦您按照上述步骤操作,您的表格将不会有重复的行,但这只是一种使您的表格保持一致的解决方法,因此它没有重复的记录,而不是永久的解决方案。

      在您执行上述步骤之前或之后,您必须查看您的merge into 语句以查看其是否正确写入,以便它不会插入重复记录。如果 merge into 语句正确,请确保您正在处理的数据集没有来自您正在读取数据的源的重复记录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-13
        • 2019-10-06
        • 2021-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多