Iceberg — это деталь реализации
Если вы не следите за новостями в индустрии данных, вы могли пропустить недавний ажиотаж вокруг открытого формата таблиц под названием Apache Iceberg™. Это один из многих открытых форматов таблиц, таких как Delta Lake, Hudi и Hive. Эти форматы меняют способ хранения данных и доступа к метаданным. Они во многом революционны.
Но я должна быть честной: меня это не волнует. Но не по тем причинам, которые вы могли бы подумать.
Что такое Iceberg?
Чтобы обсудить это, нам нужно начать с общего понимания Iceberg. Apache Iceberg — это высокопроизводительный открытый формат таблиц, разработанный для современных озер данных. Он был создан для работы с крупномасштабными наборами данных, и в рамках проекта существует множество способов взаимодействия с ним. Когда люди говорят об Iceberg, это часто означает несколько компонентов, включая, но не ограничиваясь:
- Формат таблиц Iceberg — это открытый формат таблиц для крупномасштабных данных. Таблицы, материализованные в формате таблиц Iceberg, хранятся на инфраструктуре пользователя, такой как S3 Bucket.
- Каталог данных Iceberg — это система управления метаданными с открытым исходным кодом, которая отслеживает схему, разбиение и версии таблиц Iceberg.
- Протокол REST Iceberg (также называемый REST API Iceberg) — это способ, с помощью которого движки могут поддерживать и взаимодействовать с другими совместимыми с Iceberg каталогами.
Если вы работаете в индустрии, вы также знаете, что все, что я только что написала об Iceberg, можно легко заменить на Hive,
Hudi
или Delta.
Это потому, что все они были разработаны для решения по сути одной и той же проблемы. Райан Блю (создатель Iceberg) и Майкл Армбруст (создатель Delta Lake) недавно провели замечательную беседу и сказали два момента, которые мне запомнились:
- «Мы никогда не предполагали, что люди будут обращать внимание на эту область. Это то, что мы хотели исправить, но люди должны иметь возможность не обращать на э то внимание и просто работать со своими данными. Системы хранения должны просто работать».
- «Мы решаем одни и те же задачи разными подходами».
В то же время индустрия объединяется вокруг Apache Iceberg. Iceberg имеет наивысшую доступность поддержки чтения и записи.
Snowflake запустил поддержку Iceberg в 2022 году. Databricks запустил поддержку Iceberg через Uniform в прошлом году. Microsoft объявила о поддержке Iceberg в Fabric в сентябре 2024 года на Fabric Con. Клиенты требуют интероперабельности, и поставщики прислушиваются.
Почему это важно? Стан дартизация в индустрии приносит пользу клиентам. Когда индустрия стандартизируется, клиенты получают гибкость. У каждого есть предпочтительный способ работы, и благодаря стандартизации они всегда могут использовать свои предпочтительные инструменты в данных своей организации.
Просто еще одна деталь реализации
Я не говорю, что открытые форматы таблиц не важны. Управление метаданными и производительность делают их очень значимыми и заслуживающими внимания. Наши пользователи уже рады использовать их для создания озер данных, чтобы экономить на затратах на хранение, создавать больше абстракции от своих вычислений и т.д.
Но при создании моделей данных или сосредоточении на предоставлении бизнес-ценности через аналитику моя основная забота не в том, как данные хранятся, а в том, как я могу использовать их для получения инсайтов и принятия решений. Жизненный цикл разработки аналитики и так достаточно сложен, чтобы учитывать каждую деталь. dbt абстрагирует основную платформу и позволяет мне сосредоточиться на написании SQL и оркестрации моих преобразований. Это функция, благодаря которой мне не нужно думать о том, как таблицы хранятся или оптимизируются — мне просто нужно знать, что когда я ссылаюсь на dim_customers или fct_sales, правильные данные там и готовы к использованию. Оно должно просто работать.
Иногда детали действительно важны
Хотя форматы таблиц являются деталью реализации для преобразования данных, Iceberg может повлиять на разработчиков dbt, когда детали реализации не бесшовны. В настоящее время использование Iceberg требует значительного объема предварительной настройки и интеграционной работы, помимо просто создания таблиц для начала работы.
Одним из самых больших препятствий является управление слоем метаданных Iceberg. Эти метаданные часто нужно синхронизировать с внешними каталогами, что требует тщательной настройки и постоянного обслуживания, чтобы предотвратить несоответствия. Разрешения и контроль доступа добавляют еще один уровень сложности — поскольку несколько движков могут получать доступ к таблицам Iceberg, вы должны убедиться, что все системы имеют правильный доступ как к файлам данных, так и к каталогу метаданных. В настоящее время настройка интеграций между этими движками также далека от бесшовной; в то время как некоторые движки нативно поддерживают Iceberg, другие требуют хрупких обходных путей, чтобы гарантировать правильную синхронизацию метаданных. Этот фрагментированный ландшафт означает, что вы можете оказаться в сети взаимосвязанных компонентов.
Исправление
Сегодня мы объявили о официальной поддержке формата таблиц Iceberg в dbt. Поддержка формата таблиц Iceberg — это еще одна вещь, о которой вам не нужно беспокоиться на пути к внедрению Iceberg.
С поддержкой формата таблиц Iceberg теперь проще конвертировать ваши модели dbt, использующие проприетарные форматы таблиц, в Iceberg, обновив вашу конфигурацию. После того как вы настроите внешнее хранилище для Iceberg и подключите его к вашим платформам, вы сможете перейти в вашу модель dbt и обновить конфигурацию, чтобы она выглядела примерно так:
Она доступна на следующих адаптерах:
- Athena
- Databricks
- Snowflake
- Spark
- Starburst/Trino
- Dremio
Как и в случае с любым проектом с открытым исходным кодом, поддержка Iceberg развивалась органично, поэтому реализации различаются. Однако это изменится в ближайшие месяцы, когда мы придем к одному стандарту dbt. Таким образом, независимо от того, в какой адаптер вы перейдете, конфигурация всегда будет одинаковой.
dbt как слой абстракции
dbt — это не только абстрагирование DDL для создания и управления объектами. Это также обеспечение мнения о том, как управлять и оптимизировать ваши данные. Это остается верным для нашей стратегии вокруг поддержки Iceberg.
В нашей реализации dbt-snowflake мы уже начали внедрять лучшие практики, связанные с управлением базовым местоположением, чтобы гарантировать, что вы случайно не создадите технический долг, обеспечивая масштабируемость вашей реализации Iceberg со временем. И мы еще не закончили.
Тем не менее, хотя мы можем создавать модели, требуется много начальной работы, чтобы достичь этой стадии. Разработчики dbt все еще должны учитывать реализацию, например, как настроен их внешний объем или где dbt может получить доступ к метаданным. Мы должны сделать это лучше.
Учитывая трения при запуске на Iceberg, в ближайшие месяцы мы предоставим больше возможностей, чтобы помочь пользователям внедрять Iceberg. Должно быть проще читать из внешних каталогов Iceberg. Должно быть проще монтировать ваш объем. Должно быть проще управлять обновлениями. И вы также должны доверять, что разрешения и управление соблюдаются последовательно.
И эта работа не останавливается на Iceberg. Фреймворк, который мы строим, также совместим с другими форматами таблиц, гарантируя, что любой формат таблиц, который вам подходит, поддерживается в dbt. Таким образом, пользователи dbt также могут перестать заботиться о форматах таблиц. Это просто еще одна деталь реализации.
Comments