Apache Iceberg. Вступление

Это не про салат

|
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.

Что будет дальше?

В следующих уроках мы разберём:

  1. Архитектуру и основные концепции – из чего состоит Iceberg и как он работает.
  2. Каталог и транзакционность – где хранятся метаданные и как обеспечивается ACID.
  3. Обновления и удаления – как изменять данные в неизменяемом хранилище.
  4. Типы данных и эволюция схемы – как добавлять колонки без боли.
  5. Партицирование и кластеризация – как ускорить запросы в 100 раз.
  6. Путешествия во времени и откаты – как использовать снапшоты.
  7. Теги, ветки и метаданные – продвинутые фичи для продвинутых пользователей.
  8. Поддержание таблиц – как автоматизировать уход за Iceberg.
  9. Экосистема движков запросов – Trino, Spark, Flink и другие.

Для тех, кто любит экспериментировать — на своё усмотрение добавляйте свои примеры и детали. Курс построен так, что после каждого урока вы сможете применить знания на реальных данных.

Этот курс основан на материалах курса по Apache Iceberg от Тима Берглунда.


Готовы погрузиться глубже?
Переходите к следующему уроку: Архитектура и основные концепции.