1

我有一个用例,在 S3 上存储了大约 100M 个文件。根据我的数据模型,我有一个清单文件分别用于这些文件的位置。我想了解 Apache Iceberg 是否适合为我的 S3 文件提供索引。

阅读Iceberg Documentation,似乎它谈到了创建一个表,其中一列是目标 S3 位置。如果是这种情况,它与我存储 S3 路径和与我的模型相关的其他列的普通关系表有何不同。

人们在 Iceberg 中使用 S3 索引的任何指针或示例都会有所帮助。

4

1 回答 1

0

这与正在发生的事情有点不同。Iceberg 所做的是创建与实际表数据分开的二级元数据。此元数据实际上具有特定行的“路径”字段。

如果你看一下这张图 在此处输入图像描述

路径信息与该特定文件的任何指标一起存储在“清单文件”中。这意味着当您执行读取时,查询可以确定实际读取哪些文件,而无需触及底层数据文件。

例如,如果您有 3 个包含 A 列的文件,则清单文件将大致如下所示

path/to/file1 | Max Value of ColA in File1 | Min Value of ColA in File1
path/to/file2 | Max Value of ColA in File2 | Min Value of ColA in File2
path/to/file3 | Max Value of ColA in File3 | Min Value of ColA in File3

因此,当我阅读该文件时,我会评估 ColA 上的任何谓词,而无需触及 file1、file2 或 file3。

这个“元数据”可以从 Iceberg 中的“元数据表”中读取,但这只是特定快照的元数据文件的 SQL 视图。

于 2021-09-24T19:59:28.457 回答