Apache Iceberg. Вступление
Это не про салат
Содержание

Что такое Apache Iceberg?
Представьте, что ваш даталейк — это гигантский холодильник, куда вы годами складывали продукты без этикеток. Молоко стоит рядом с колбасой, сыр затерялся где‑то за банкой солёных огурцов, а про ту самую банку с вареньем вы уже и забыли. Когда нужно быстро приготовить ужин, вы тратите полчаса на поиски нужного ингредиента.
Примерно так же выглядит работа с данными в объектных хранилищах (S3, HDFS) без структуры: файлы в разных форматах, схемы меняются, версии путаются, а чтобы выполнить простой select * from sales where year = 2023, приходится писать скрипт на 200 строк.
Apache Iceberg — это табличный формат, который превращает ваш хаотичный «холодильник» в аккуратный супермаркет с чёткими полками, ценниками и даже кассовым аппаратом. Он добавляет к вашим данным:
- Схему (что лежит в каждой колонке)
- Партицирование (где что лежит)
- Транзакционность (можно безопасно менять содержимое)
- Версионность (можно посмотреть, что было вчера)
И всё это — без необходимости перекладывать все файлы заново.
Почему Iceberg?
Потому что жизнь слишком коротка, чтобы вручную чинить сломанные ETL‑пайплайны. Вот что Iceberg даёт вам из коробки:
- Путешествия во времени – запросить данные «как они были вчера» без хлопот. Удачно залили кривые данные? Не беда — откатитесь на предыдущий снапшот, как в Git.
- Откаты – быстро избавиться от ошибочных загрузок. Представьте, что вы случайно удалили все продажи за 2024 год, а потом просто сказали: «Ой, верните как было». Iceberg сделает это за секунды.
- Эволюция схемы – добавлять и менять столбцы без полной пересборки таблицы. Больше не нужно перезаписывать терабайты данных, чтобы добавить поле
customer_middle_name. - Скрытые партиции – партицирование, которое не ломает ваши запросы. Можно перепартицировать таблицу, и старые запросы продолжат работать.
- Оптимизации – автоматическое объединение мелких файлов, удаление дубликатов, сборка мусора. Iceberg сам подметает за вами.
«Iceberg» — не только ледяная гора, но и ваш новый лучший друг в работе с данными. Если ваш даталейк будет таять, Iceberg спасёт вас от потери данных… и от скуки! 😄
Кому нужен Iceberg?
- Инженерам данных, которые устали объяснять, почему
alter tableв Hive занимает три часа. - Аналитикам, которые хотят делать
selectбез предварительной молитвы. - Архитекторам, которые проектируют платформы данных и не хотят, чтобы их проклинали потомки.
- Всем, кто работает с большими данными и мечтает о порядке.
Если вы хотя бы раз писали скрипт для «починить партиции в Hive», Iceberg — ваш выбор.
Где уже используют Iceberg?
AWS, Google Cloud, Azure, Snowflake, Databricks и многие другие компании уже выбрали Iceberg в качестве формата таблиц. Даже пингвины в Антарктиде (наверное) оценили бы его надёжность. Если вы строите современную платформу данных, он почти обязателен.
В этом блоге я уже писал про Iceberg с Trino и DuckDB.
Что будет дальше?
В следующих уроках мы разберём:
- Архитектуру и основные концепции – из чего состоит Iceberg и как он работает.
- Каталог и транзакционность – где хранятся метаданные и как обеспечивается ACID.
- Обновления и удаления – как изменять данные в неизменяемом хранилище.
- Типы данных и эволюция схемы – как добавлять колонки без боли.
- Партицирование и кластеризация – как ускорить запросы в 100 раз.
- Путешествия во времени и откаты – как использовать снапшоты.
- Теги, ветки и метаданные – продвинутые фичи для продвинутых пользователей.
- Поддержание таблиц – как автоматизировать уход за Iceberg.
- Экосистема движков запросов – Trino, Spark, Flink и другие.
Для тех, кто любит экспериментировать — на своё усмотрение добавляйте свои примеры и детали. Курс построен так, что после каждого урока вы сможете применить знания на реальных данных.
Этот курс основан на материалах курса по Apache Iceberg от Тима Берглунда.
Готовы погрузиться глубже?
Переходите к следующему уроку: Архитектура и основные концепции.