Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Apache Iceberg — это формат таблицы с открытым исходным кодом для рабочих нагрузок аналитики, которые поддерживают такие функции, как эволюция схемы, перемещение по времени и скрытая секционирование. Как и Delta Lake, Iceberg создает слой абстракции, который обеспечивает возможность ACID-транзакций для данных в объектном хранилище.
Azure Databricks поддерживает таблицы Iceberg, использующие формат файла Apache Parquet и версии 1, 2 и 3 спецификации Iceberg. Айсберг поддерживает атомарность и согласованность, записывая новые файлы метаданных для каждого изменения таблицы. Все таблицы Iceberg в Azure Databricks следуют открытой спецификации формата Iceberg. См. спецификацию таблицы Iceberg.
Каталог Айсберга — это слой верхнего уровня архитектуры таблицы Айсберга, который возвращает текущие метаданные при загрузке таблицы. Каталог Iceberg обрабатывает такие операции, как создание, удаление и переименование таблиц.
Azure Databricks поддерживает таблицы Iceberg, управляемые следующими:
- каталог Unity
- Внешние каталоги, такие как AWS Glue, хранилище метаданных Hive или Каталог Snowflake Horizon
Requirements
Чтобы использовать управляемые или внешние таблицы Apache Iceberg, необходимо выполнить следующие требования:
- Используйте рабочую область с включенным каталогом Unity.
- Используйте Databricks Runtime 16.4 LTS или более поздней версии.
Для управляемых таблиц также необходимо выполнить следующее требование:
- Рабочая область с поддержкой бессерверных вычислений
Azure Databricks использует бессерверные вычисления для хранения метаданных таблицы Iceberg для управляемых таблиц. Бессерверные вычисления должны иметь сетевое подключение к облачной учетной записи хранилища, в которой размещена таблица. Если брандмауэр защищает учетную запись хранения, настройте бессерверное сетевое подключение, чтобы бессерверные вычислительные ресурсы могли связаться с ним. Требуемая настройка зависит от облака. Дополнительные сведения см. в разделе Сетевое взаимодействие в бессерверной вычислительной плоскости.
Создание таблиц Iceberg в каталоге Unity
Таблицы Айсберга, создаваемые в каталоге Unity, являются управляемыми таблицами Iceberg. Эти таблицы можно создать с помощью следующих средств:
- Databricks Runtime или Databricks SQL
- Внешние механизмы, совместимые с Iceberg и поддерживающие API каталога REST Iceberg, такие как Apache Spark, Flink, Trino или Kafka. См. Как подключаться к таблицам Azure Databricks из клиентов Apache Iceberg.
Управляемые таблицы Iceberg полностью интегрированы с функциями платформы Azure Databricks:
- Каталог Unity управляет задачами жизненного цикла, такими как срок действия моментального снимка и сжатие файлов в этих таблицах.
- Жидкая кластеризация повышает производительность запросов.
- Прогнозная оптимизация автоматизирует операции для снижения затрат на хранение и повышения скорости запросов.
- материализованные представления поддерживают добавочное обновление, чтобы обеспечить актуальность результатов при изменении исходных данных.
- таблицы потоковой передачи поддерживают добавочную загрузку данных из Kafka и облачного хранилища объектов с помощью Databricks SQL.
Databricks рекомендует использовать клиент Iceberg версии 1.9.2 и выше для чтения и записи в каталог Unity.
Читать таблицы Айсберга, управляемые другими каталогами
Иностранная таблица Айсберга — это таблица Айсберга, управляемая каталогом за пределами каталога Unity. Внешний каталог сохраняет текущие метаданные таблицы. Azure Databricks использует Lakehouse Federation для получения метаданных и чтения таблицы из хранилища объектов.
Таблицы Foreign Iceberg доступны только для чтения в Azure Databricks и имеют ограниченную поддержку платформы.
Доступ к таблицам Айсберга с помощью внешних систем
Доступ ко всем таблицам Iceberg в каталоге Unity можно получить с помощью API REST каталога Iceberg. Этот открытый API поддерживает операции чтения и записи из внешних движков Iceberg на разных языках и платформах. См. Как подключаться к таблицам Azure Databricks из клиентов Apache Iceberg.
Каталог REST поддерживает отправку учетных данных, которая предоставляет временные учетные данные внешним обработчикам для доступа к базовому хранилищу. Дополнительные сведения см. в разделе Credential Vending в Unity Catalog для доступа к внешним системам.
Предупреждение
Автоматическая выдача учетных данных не поддерживается в рабочих пространствах, использующих стандартное хранилище. См. Ограничения.
Клонировать управляемые таблицы Iceberg
Вы можете создать полную, независимую копию управляемой таблицы Айсберга с помощью DEEP CLONE. Глубокий клон копирует файлы данных и метаданные таблицы в новую управляемую таблицу Iceberg в каталоге Unity. См. клонирование управляемой таблицы Айсберга.
Создайте материализованное представление, совместимое с внешними средствами чтения Iceberg
Important
Управляемые материализованные представления Iceberg доступны в режиме открытого предварительного просмотра. Чтобы включить эту функцию, обратитесь к команде Databricks, отвечающей за вашу учетную запись.
Вы можете создать материализованное представление, совместимое с внешними средствами чтения Iceberg. Чтобы создать его, используйте USING ICEBERG в инструкции CREATE MATERIALIZED VIEW . Полный синтаксис см. в разделе CREATE MATERIALIZED VIEW (конвейеры). Полные требования см. в разделе "Включение доступа к внешним данным" для потоковых таблиц и материализованных представлений.
CREATE MATERIALIZED VIEW <mv_name>
USING ICEBERG
AS
SELECT * FROM samples.nyctaxi.trips;
После создания материализованного представления запустите REPAIR TABLE с помощью SYNC METADATA. См. REPAIR TABLE.
REPAIR TABLE <mv_name> SYNC METADATA;
Внешние читатели Iceberg могут читать материализованное представление, но не могут записывать в него. Сведения о чтении материализованного представления из внешнего средства чтения Iceberg см. в статье "Включение доступа внешних данных к потоковым таблицам и материализованным представлениям".
Эволюция разделов
При эволюции секционирования можно изменить схему секционирования существующей таблицы Apache Iceberg без перезаписи данных. Новые данные записываются с обновленным макетом секции и существующие данные сохраняют исходный макет секции. Apache Iceberg отслеживает спецификации секций и применяет правильный фильтр во время запроса. См. эволюцию секций для Apache Iceberg.
Замечание
Эволюция разделов поддерживается в управляемых таблицах Iceberg посредством внешних механизмов Iceberg с помощью REST-каталога Iceberg, но не через Databricks SQL. Преобразования секций на основе выражений, такие как years() и bucket() не поддерживаются для управляемых таблиц Iceberg. См. Ограничения.
Чтобы настроить внешний доступ, см. раздел Доступ к таблицам Azure Databricks из клиентов Apache Iceberg.
В следующих примерах показано, как использовать эволюцию секций с помощью Spark SQL и расширения Iceberg. Синтаксис эволюции секций Apache Iceberg и поддерживаемые преобразования см. в статье Apache Iceberg Spark DDL.
Добавить поле раздела
Чтобы добавить новое поле раздела в существующую таблицу:
ALTER TABLE catalog.schema.table ADD PARTITION FIELD column_name;
Удалить поле раздела
Чтобы удалить существующее поле секции из таблицы, выполните следующее:
ALTER TABLE catalog.schema.table DROP PARTITION FIELD column_name;
Заменить поле раздела
Чтобы заменить одно поле раздела на другое без промежуточного переразбиения:
ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;
Ограничения
Следующие ограничения применяются к таблицам Айсберга в Azure Databricks и могут быть изменены.
- Таблицы Iceberg поддерживают только формат файла Apache Parquet.
- Для Iceberg v2 позиционные удаления и удаления на основе равенства не поддерживаются. Вместо этого Azure Databricks поддерживает векторы удаления Iceberg версии 3 для удаления на уровне строк.
- Создание веток и тегирование не поддерживаются. Только основная ветвь доступна при чтении внешних таблиц Iceberg.
- Разбиение:
- Эволюция секций поддерживается только в управляемых таблицах Iceberg, когда происходит взаимодействие со сторонними системами Iceberg.
- Внешние таблицы Iceberg не поддерживают эволюцию разделов.
- Секционирование по
BINARYтипу не поддерживается.
- Представления недоступны во внешних движках Iceberg.
- Следующие типы данных не поддерживаются:
UUIDFixed(L)TIME- Вложенные
STRUCTс обязательными полями
- Ограничения, относящиеся к Айсбергу версии 3, см. в разделе "Ограничения".
Ограничения для управляемых таблиц Iceberg
Следующие ограничения применяются специально к управляемым таблицам Айсберга:
- Поиск ИИ не поддерживается. См. Databricks AI Search.
- Если вы используете управляемые таблицы Iceberg в качестве источника для синхронизируемых таблиц Lakebase, инкрементная обработка с автоматической лентой изменений данных не поддерживается.
- Управляемые таблицы Iceberg можно создавать только в том случае, если для обслуживания таблиц включена прогнозная оптимизация .
- Следующие свойства таблицы управляются каталогом Unity и не могут быть заданы вручную.
write.location-provider.implwrite.data.pathwrite.metadata.pathwrite.format.defaultwrite.delete.format.default
- Кодек сжатия для изменения сжатия таблицы не поддерживается. Все таблицы используют Zstd по умолчанию.
- Секционирование по выражениям (например,
years(),months(),days(),hours(), )bucket()не поддерживается. - Функции, не поддерживаемые в Apache Iceberg, также недоступны для управляемых таблиц Iceberg. К ним относятся генерируемые столбцы Delta Lake, ограничения на Azure Databricks и поддержка сортировки для Delta Lake.
Ограничения таблицы Foreign Iceberg
Следующие ограничения применяются специально к иностранным таблицам Айсберга:
- Перемещение по времени поддерживается только для моментальных снимков Iceberg, которые ранее были прочитаны в Azure Databricks (то есть моментальные снимки, в которых выполнялась инструкция
SELECT). - Использование функций преобразования контейнеров для секционирования Iceberg может снизить производительность запросов при использовании условных фильтров.
- Облачные продукты уровня хранилища, такие как Amazon S3, не интегрированы с иностранными таблицами Iceberg. Доступ к внешним таблицам Iceberg в Azure Databricks может восстановить данные, архивированные в более экономичных уровнях хранения.
- Для кластеров выделенного режима доступа операции чтения и
REFRESH FOREIGN TABLEна таблицах Айсберг требуютALL PRIVILEGES.