gpt4 book ai didi

azure - 是否可以在 Azure databricks 中使用基于 Parquet 文件名的增量表跟踪器?

转载 作者:行者123 更新时间:2023-12-03 07:02:36 35 4
gpt4 key购买 nike

今天在工作时,我看到了一个基于文件名的三角洲湖跟踪器。我所说的增量跟踪器是指定义 parquet 文件是否已被摄取的函数。

代码将检查哪些文件(来自增量表)尚未已被摄取,然后使用以下命令读取增量表中的 Parquet 文件:spark.createDataFrame(路径,StringType())

在使用增量表之后,我认为以这种方式使用增量跟踪器似乎不太合适。

  • 如果记录被删除增量日志指向新文件的可能性有多大,以及该删除的记录将被解读为新的吗?

  • 如果记录更新增量日志 不指向新文件以及此更新记录的可能性有多大不会被考虑?

  • 如果增量表上发生一些维护会发生什么一些新文件突然被写入的可能性?这可能会导致记录被重新摄取

任何观察或建议是否可以这样工作都会很好。谢谢

最佳答案

在 Delta Lake 中,一切都在文件级别上运行。因此不存在“就地”更新或删除。假设一条记录被删除(或更新),那么大致会发生以下情况:

  1. 读入包含相关记录的 Parquet 文件(+文件中恰好存在的其他记录)
  2. 将除已删除记录之外的所有记录写入新的 parquet 文件
  3. 使用新版本更新事务日志,将旧的 parquet 文件标记为已删除,将新的 parquet 文件标记为添加。请注意,在运行 VACUUM 之前,旧的 Parquet 文件不会被物理删除。命令。

更新过程基本相同。

更具体地回答您的问题:

In case record is deleted, what are the chances that the delta logwould point to a new file , and that this deleted record would be readas a new one?

增量日志将指向一个新文件,但删除的记录不会在其中。将会有原始文件中恰好存在的所有其他记录。

In case record is updated, what would be the chance that delta logwould not point to a new file, and that this updated record would notbe considered ?

文件未就地更新,因此不会发生这种情况。将写入包含更新记录(+原始文件中的任何其他记录)的新文件。事务日志被更新为“指向”这个新文件。

In case some maintenance is happening on the delta table, what are thechances that some new files are written out of nowhere ? Which maycause a record to be re-ingested

这是可能的,尽管不是“凭空而来”。例如,如果您运行 OPTIMIZE现有的 Parquet 文件被重新整理/组合以提高性能。基本上,这意味着将写入许多新的 parquet 文件,并且事务日志中的新版本将指向这些 parquet 文件。如果在此之后您拾取所有新文件,您将重新摄取数据。

一些注意事项:如果您的增量表仅附加,您可以使用 structured streaming改为从中读取。如果没有,则 Databricks 提供 Change Data Feed提供插入、更新和删除的记录级详细信息。

关于azure - 是否可以在 Azure databricks 中使用基于 Parquet 文件名的增量表跟踪器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72088621/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com