AWS объявила, что сервис Amazon S3 Tables теперь поддерживает все типы данных, предусмотренные спецификацией Apache Iceberg V3, что позволяет создавать новые таблицы версии V3 или обновлять существующие таблицы на основе V2. Обновление включает векторы удаления (Deletion Vectors), происхождение строк (Row Lineage), а также типы данных variant, nanosecond timestamp, geometry, geography и unknown.
Эти возможности предназначены для аналитических команд, управляющих большими таблицами в озёрах данных. Вместо представления полуструктурированных данных, географических координат или временных меток сверхвысокой точности в виде строк или целых чисел их можно хранить во встроенных типах в таблицах Iceberg, продолжая использовать файлы Parquet в Amazon S3.
Что меняется на практике?
Векторы удаления заменяют позиционные файлы удаления, использовавшиеся в Iceberg V2, сжатым двоичным представлением. Согласно примеру AWS, удаление 50 тысяч записей из таблицы, содержащей два миллиарда строк, может привести к созданию одного файла вектора удаления вместо тысяч небольших файлов, что снижает нагрузку, связанную с количеством файлов, и последующее время сжатия.
Происхождение строк автоматически добавляет поля _row_id и _last_updated_sequence_number. Последующие конвейеры обработки могут использовать номер последовательности для извлечения строк, изменившихся с момента предыдущей контрольной точки, вместо полного сканирования таблицы при каждом запуске.
Тип variant хранит полуструктурированные данные в колоночном формате, позволяя движку запросов напрямую считывать необходимые поля и использовать статистику для сокращения операций ввода-вывода вместо анализа текстов JSON при каждом запросе. Iceberg V3 также предоставляет встроенные типы для географических данных и временных меток с точностью до наносекунд.
Обновление с Iceberg V2
Существующую таблицу можно атомарно обновить, изменив свойство format-version на 3, без перезаписи данных. Средства чтения V2 продолжают работать с таблицами, обновлёнными до версии V3, пока в среде не будет завершено внедрение поддержки V3, а S3 Tables удаляет старые файлы удаления в ходе следующего цикла сжатия и начинает инициализацию данных о происхождении строк при первой последующей модификации данных.
Однако это обновление является однонаправленным; спецификация Apache Iceberg не поддерживает возврат с V3 на V2. Поэтому необходимо заранее убедиться, что все движки, обращающиеся к таблице, поддерживают новую версию.
Совместимость и ограничения
Для новых типов данных требуется движок на основе Apache Spark 4.0 или более поздней версии, например AWS Glue 6.0 или более поздней версии либо Amazon EMR версии 8.1 или более поздней версии. Кроме того, эти типы доступны только для таблиц, использующих Parquet, и недоступны с ORC или Avro.
Столбцы variant, geometry, geography или временные метки с точностью до наносекунд нельзя использовать в сортировке таблицы для сжатия, хотя таблицы, содержащие их, по-прежнему можно сжимать, если сортировка основана на столбцах других типов. S3 Tables продолжает автоматически управлять сжатием и обслуживанием, поддерживая создание таблиц через консоль Amazon S3, AWS CLI или любой движок, поддерживающий интерфейс Iceberg REST Catalog.
Почему это обновление важно?
Обновление предоставляет командам по работе с данными путь с меньшей зависимостью от пользовательских преобразований при работе с масштабными удалениями, нерегулярными данными и постепенными обновлениями. Однако практическая польза зависит от готовности движков запросов и записи в организации; обновление не означает немедленной совместимости со всеми инструментами, а использование новых типов ограничивает формат хранения и требует определённых версий Spark и связанных с ним сервисов.
Поддержка Apache Iceberg V3 стала доступна во всех регионах AWS, поддерживающих S3 Tables, без дополнительной платы за обновление; при этом продолжают действовать обычные тарифы S3 Tables.