Apache Iceberg для индексации AWS S3

У меня есть пример использования, когда на S3 хранится около 100 миллионов файлов. У меня есть файл манифеста отдельно для расположения этих файлов на основе моей модели данных. Я хочу понять, подходит ли Apache Iceberg для индексирования моих файлов S3.

Читая по документациюIceberg , кажется, что в ней говорится о создании таблицы с одним столбцом, являющимся целевым местоположением S3. Если это так, то чем она отличается от обычной реляционной таблицы, в которой я храню путь S3 и другие столбцы, относящиеся к моей модели.

Любые указатели или примеры, когда люди использовали индексацию S3 с Iceberg, были бы полезны.

1 ответ

Это немного отличается от того, что происходит. Что делает 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-представление файлов метаданных для конкретного снимка.

Другие вопросы по тегам