Apache Hudi 如何执行快照查询

问题描述 投票:0回答:1

我不太清楚Hudi如何确保高效的快照查询(参见https://hudi.apache.org/docs/next/table_types/

我在 .hoodie 文件夹中看到的只是由大量提交文件组成的时间线。 每个提交文件仅包含一个信息(有关位置、文件 ID 等的元数据) 关于其本身引入的更改。

假设有 1000 个提交文件,并且有一些记录是在第二次提交中添加的,然后从未更新,并且相应分区文件夹中没有任何更改 - 因此要提供当前数据快照,Hudi 必须查找所有提交以获取位置所有数据文件,是吗?

正如我所期望的那样,Apache Iceberg 正在做的事情 - 它的元数据文件包含给定快照的关于所有数据文件的信息。

有人可以解释一下吗?

谢谢你

apache-hudi
1个回答
0
投票

因此,要提供当前数据快照,Hudi 必须查找所有提交以获取所有数据文件的位置,对吗?

不是真的。文件位置存在于元数据表中。快照查询将使用时间线来识别有效的提交(也排除无效的提交)。由于有序的时间线设计,hudi 不需要将所有文件存储在给定快照中。

请注意,时间线已存档(最多保留 200 次提交),因此在最后一次非存档提交之前不可能进行快照查询。顺便说一句,之前写入的所有文件都将被视为在 sbapshot 查询中读取。

最后一个概念:数据存储在文件组中。查询期间仅考虑每个文件组的一个提交的 parquet 文件。

© www.soinside.com 2019 - 2024. All rights reserved.