Использование каталога Unity с конвейерами динамических таблиц Delta
Внимание
Поддержка Delta Live Tables для Unity Catalog предоставляется в общедоступной предварительной версии.
Помимо существующей поддержки сохранения таблиц в хранилище метаданных Hive, вы можете использовать каталог Unity с конвейерами Delta Live Tables для:
- Определите каталог в каталоге Unity, где конвейер будет сохранять таблицы.
- Чтение данных из таблиц каталога Unity.
Рабочая область может содержать конвейеры, использующие каталог Unity или хранилище метаданных Hive. Однако один конвейер не может записывать данные в хранилище метаданных Hive и каталог Unity и существующие конвейеры, чтобы использовать каталог Unity. Существующие конвейеры, которые не используют каталог Unity, не влияют на эту предварительную версию, и будут продолжать сохранять данные в хранилище метаданных Hive с помощью настроенного расположения хранилища.
Если в этом документе не указано иное, все существующие источники данных и функциональные возможности Delta Live Tables поддерживаются конвейерами, используюющими каталог Unity. Интерфейсы Python и SQL поддерживаются конвейерами, используюющими каталог Unity.
Таблицы, созданные в конвейере, также можно запрашивать из общих кластеров каталога Unity с помощью Databricks Runtime 13.3 LTS и выше или хранилища SQL. Таблицы нельзя запрашивать из назначенных или не изолированных кластеров.
Для управления разрешениями для таблиц, созданных конвейером каталога Unity, используйте GRANT и REVOKE.
Требования
Для создания таблиц в каталоге Unity из конвейера Разностных динамических таблиц необходимо создать следующие таблицы:
- У вас должны быть
USE CATALOG
привилегии в целевом каталоге. - Необходимо иметь
CREATE MATERIALIZED VIEW
иUSE SCHEMA
привилегии в целевой схеме, если конвейер создает материализованные представления. - Необходимо иметь
CREATE TABLE
иUSE SCHEMA
привилегии в целевой схеме, если конвейер создает потоковые таблицы. - Если целевая схема не указана в параметрах конвейера, необходимо иметь
CREATE MATERIALIZED VIEW
илиCREATE TABLE
привилегии по крайней мере одной схеме в целевом каталоге.
Ограничения
Ниже приведены ограничения при использовании каталога Unity с разностными динамическими таблицами:
По умолчанию только администраторы конвейера и администраторы рабочей области имеют разрешение на просмотр журналов драйверов из кластера, на котором выполняется конвейер с поддержкой каталога Unity. Чтобы включить доступ для других пользователей для просмотра журналов драйверов, см. статью "Разрешить пользователям, не администраторам, просматривать журналы драйверов из конвейера с поддержкой каталога Unity".
Существующие конвейеры, использующие хранилище метаданных Hive, нельзя обновить для использования каталога Unity. Чтобы перенести существующий конвейер, который записывается в хранилище метаданных Hive, необходимо создать новый конвейер и повторно принять данные из источника данных.
Невозможно создать конвейер с поддержкой каталога Unity в рабочей области, подключенной к хранилищу метаданных, созданному в общедоступной предварительной версии каталога Unity. См. раздел "Обновление до наследования привилегий".
JAR не поддерживаются. Установка сторонних библиотек поддерживается только для библиотек Python. См. статью "Управление зависимостями Python" для конвейеров delta Live Tables.
Запросы языка обработки данных (DML), изменяющие схему потоковой таблицы, не поддерживаются.
Материализованное представление, созданное в конвейере Delta Live Tables, нельзя использовать в качестве источника потоковой передачи за пределами этого конвейера, например в другом конвейере или в нижней записной книжке.
Публикация в схемах, указывающих расположение управляемого хранилища, поддерживается только в канале предварительной версии.
Если конвейер публикуется в схеме с управляемым расположением хранилища, схема может быть изменена в последующем обновлении, но только если обновленная схема использует то же расположение хранилища, что и ранее указанная схема.
Если целевая схема указывает расположение хранилища, все таблицы хранятся там. Если расположение хранилища схемы не указано, таблицы хранятся в расположении хранилища каталога, если целевой каталог указывает один. Если расположения схемы и хранилища каталога не указаны, таблицы хранятся в корневом расположении хранилища метаданных, где публикуются таблицы.
Вкладка "Журнал" в обозревателе каталогов не отображает журнал потоковых таблиц и материализованных представлений.
Свойство
LOCATION
не поддерживается при определении таблицы.Конвейеры с поддержкой каталога Unity не могут публиковаться в хранилище метаданных Hive.
Поддержка UDF Python доступна в общедоступной предварительной версии. Чтобы использовать определяемые пользователем функции Python, конвейер должен использовать канал предварительной версии.
Разностный общий доступ нельзя использовать с материализованным представлением delta Live Table или таблицей потоковой передачи, опубликованной в каталоге Unity.
Вы не можете использовать табличную
event_log
функцию в конвейере или запросе для доступа к журналам событий нескольких конвейеров.Невозможно предоставить общий доступ к представлению, созданному
event_log
над табличной функцией , с другими пользователями.Кластеры с одним узлом не поддерживаются конвейерами с поддержкой каталога Unity. Так как разностные динамические таблицы могут создавать кластер с одним узлом для запуска небольших конвейеров, конвейер может завершиться ошибкой при ссылке на сообщение об ошибке
single-node mode
. Если это происходит, убедитесь, что при настройке параметров вычислений укажите по крайней мере одну рабочую роль.Таблицы, созданные в конвейере с поддержкой каталога Unity, не могут запрашиваться из назначенных или без кластеров изоляции. Чтобы запросить таблицы, созданные конвейером Delta Live Tables, необходимо использовать кластер режима общего доступа с помощью Databricks Runtime 13.3 LTS и выше или хранилища SQL.
Delta Live Tables использует кластер режима общего доступа для запуска конвейера с поддержкой каталога Unity. Конвейер с поддержкой каталога Unity не может выполняться в назначенном кластере. Сведения об ограничениях режима общего доступа в каталоге Unity см. в разделе об ограничениях режима общего доступа в каталоге Unity.
Фильтры строк или маски столбцов нельзя использовать с материализованными представлениями или таблицами потоковой передачи, опубликованными в каталоге Unity.
Примечание.
Базовые файлы, поддерживающие материализованные представления, могут включать данные из вышестоящих таблиц (включая возможные личные сведения), которые не отображаются в определении материализованного представления. Эти данные автоматически добавляются в базовое хранилище для поддержки добавочного обновления материализованных представлений.
Поскольку базовые файлы материализованного представления могут рисковать предоставлением данных из вышестоящих таблиц, не входящих в схему материализованного представления, Databricks рекомендует не предоставлять общий доступ к базовому хранилищу с ненадежными подчиненными потребителями.
Например, предположим, что определение материализованного представления включает COUNT(DISTINCT field_a)
предложение. Несмотря на то, что определение материализованного представления содержит только предложение агрегирования COUNT DISTINCT
, базовые файлы будут содержать список фактических значений field_a
.
Изменения существующих функциональных возможностей
Если разностные динамические таблицы настроены для сохранения данных в каталоге Unity, жизненный цикл таблицы управляется конвейером Delta Live Table. Поскольку конвейер управляет жизненным циклом таблицы и разрешениями:
- Если таблица удаляется из определения конвейера Delta Live Table, соответствующее материализованное представление или запись потоковой таблицы удаляется из каталога Unity в следующем обновлении конвейера. Фактические данные хранятся в течение определенного периода времени, чтобы его можно было восстановить, если он был удален по ошибке. Данные можно восстановить путем повторного добавления материализованнго представления или потоковой таблицы в определение конвейера.
- Удаление конвейера разностных динамических таблиц приводит к удалению всех таблиц, определенных в этом конвейере. Из-за этого изменения пользовательский интерфейс разностных динамических таблиц обновляется, чтобы подтвердить удаление конвейера.
- Внутренние таблицы резервного копирования, включая таблицы резервного копирования, используемые для поддержки
APPLY CHANGES INTO
, не доступны напрямую пользователям.
Запись таблиц в каталог Unity из конвейера разностных динамических таблиц
Примечание.
Если вы не выбираете каталог и целевую схему для конвейера, таблицы не публикуются в каталоге Unity и могут обращаться только к запросам в том же конвейере.
Чтобы записать таблицы в каталог Unity, при создании конвейера выберите каталогUnity в разделе "Параметры хранилища", выберите каталог в раскрывающемся меню каталога и выберите существующую схему или введите имя новой схемы в раскрывающемся меню "Целевая схема ". Дополнительные сведения о каталогах каталогов Unity см. в статье "Что такое каталоги в Azure Databricks?". Дополнительные сведения о схемах в каталоге Unity см. в статье "Что такое схемы в Azure Databricks?".
Прием данных в конвейер каталога Unity
Конвейер, настроенный для использования каталога Unity, может считывать данные из:
- Каталог Unity, управляемые и внешние таблицы, представления, материализованные представления и потоковые таблицы.
- Таблицы и представления хранилища метаданных Hive.
- Автозагрузчик с помощью функции для чтения из внешних расположений
cloud_files()
каталога Unity. - Apache Kafka и Amazon Kinesis.
Ниже приведены примеры чтения из каталога Unity и таблиц хранилища метаданных Hive.
Прием пакетной службы из таблицы каталога Unity
SQL
CREATE OR REFRESH LIVE TABLE
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dlt.table
def table_name():
return spark.table("my_catalog.my_schema.table")
Потоковая передача изменений из таблицы каталога Unity
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
Python
@dlt.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Прием данных из хранилища метаданных Hive
Конвейер, использующий каталог Unity, может считывать данные из таблиц хранилища метаданных Hive с помощью hive_metastore
каталога:
SQL
CREATE OR REFRESH LIVE TABLE
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Python
@dlt.table
def table3():
return spark.table("hive_metastore.some_schema.table")
Прием данных из автозагрузчика
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
cloud_files(
<path-to-uc-external-location>,
"json"
)
Python
@dlt.table(table_properties={"quality": "bronze"})
def table_name():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "json")
.load(f"{path_to_uc_external_location}")
)
Совместное использование материализованных представлений (динамические таблицы)
По умолчанию таблицы, созданные конвейером, могут запрашиваться только владельцем конвейера. Вы можете предоставить другим пользователям возможность запрашивать таблицу с помощью инструкций GRANT и отменять доступ к запросу с помощью инструкций REVOKE. Дополнительные сведения о привилегиях в каталоге Unity см. в разделе "Управление привилегиями" в каталоге Unity.
Предоставление выбора в таблице
GRANT SELECT ON TABLE
my_catalog.my_schema.live_table
TO
`user@databricks.com`
Отмена выбора таблицы
REVOKE SELECT ON TABLE
my_catalog.my_schema.live_table
FROM
`user@databricks.com`
Предоставление разрешений на создание таблицы или создание материализованных привилегий представления
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Просмотр происхождения конвейера
Происхождение таблиц в конвейере "Динамические таблицы Delta Live Tables" отображается в обозревателе каталогов. Для материализованных представлений или потоковых таблиц в конвейере с поддержкой каталога Unity пользовательский интерфейс происхождения обозревателя каталогов отображает вышестоящий и подчиненный таблицы. Дополнительные сведения о происхождении каталога Unity см. в статье "Сбор и просмотр происхождения данных" с помощью каталога Unity.
Для материализованного представления или потоковой таблицы в конвейере разностных динамических таблиц с поддержкой каталога Unity пользовательский интерфейс происхождения обозревателя каталогов также будет связан с конвейером, создающим материализованное представление или таблицу потоковой передачи, если конвейер доступен из текущей рабочей области.
Добавление, изменение или удаление данных в потоковой таблице
Инструкции языка обработки данных (DML), включая инструкции insert, update, delete и merge, можно использовать для изменения таблиц потоковой передачи, опубликованных в каталоге Unity. Поддержка запросов DML к таблицам потоковой передачи позволяет использовать такие варианты, как обновление таблиц для соответствия требованиям Общего регламента по защите данных (GDPR).
Примечание.
- Инструкции DML, изменяющие схему таблицы потоковой передачи, не поддерживаются. Убедитесь, что операторы DML не пытаются развивать схему таблицы.
- Инструкции DML, обновляющие потоковую таблицу, могут выполняться только в общем кластере каталога Unity или хранилище SQL с помощью Databricks Runtime 13.3 LTS и более поздних версий.
- Так как для потоковой передачи требуются источники данных только для добавления, если обработка требует потоковой передачи из исходной таблицы потоковой передачи с изменениями (например, операторами DML), задайте флаг skipChangeCommits при чтении исходной таблицы потоковой передачи. При
skipChangeCommits
установке транзакции, которые удаляют или изменяют записи в исходной таблице, игнорируются. Если для обработки не требуется потоковая таблица, можно использовать материализованное представление (которое не имеет ограничения только для добавления) в качестве целевой таблицы.
Ниже приведены примеры инструкций DML для изменения записей в таблице потоковой передачи.
Удаление записей с определенным идентификатором:
DELETE FROM my_streaming_table WHERE id = 123;
Обновите записи с определенным идентификатором:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по