Поделиться через


Использование каталога Unity с конвейерами динамических таблиц Delta

Внимание

Поддержка Delta Live Tables для Unity Catalog предоставляется в общедоступной предварительной версии.

Databricks рекомендует настроить конвейеры Delta Live Tables с помощью каталога Unity.

Конвейеры, настроенные с помощью каталога Unity, публикуют все определенные материализованные представления и таблицы потоковой передачи в указанный каталог и схему. Конвейеры каталога Unity могут считываться из других таблиц и томов каталога Unity.

Для управления разрешениями для таблиц, созданных конвейером каталога Unity, используйте GRANT и REVOKE.

Требования

Разрешения, необходимые для создания таблиц в каталоге Unity из конвейера Delta Live Tables:

  • USE CATALOG привилегии в целевом каталоге.
  • CREATE MATERIALIZED VIEW и USE SCHEMA привилегии в целевой схеме, если конвейер создает материализованные представления.
  • CREATE TABLE и USE SCHEMA привилегии в целевой схеме, если конвейер создает потоковые таблицы.
  • Если целевая схема не указана в параметрах конвейера, необходимо иметь CREATE MATERIALIZED VIEW или CREATE TABLE привилегии по крайней мере одной схеме в целевом каталоге.

Вычисления, необходимые для запуска конвейера с поддержкой каталога Unity:

Вычисления, необходимые для запроса таблиц, созданных конвейером Delta Live Tables с помощью каталога Unity (включая потоковые таблицы и материализованные представления), включают любое из следующих элементов:

  • Хранилища SQL

  • Кластеры режима общего доступа в Databricks Runtime 13.3 LTS или более поздней версии.

  • Кластеры режима доступа одного пользователя (или назначено), если в одном пользовательском кластере включен более подробный контроль доступа (т. е. кластер работает в Databricks Runtime 15.4 или более поздней версии, а бессерверные вычисления включены для рабочей области). Дополнительные сведения см. в разделе "Точное управление доступом" для вычислений одного пользователя.

  • Кластеры режима доступа с одним пользователем (или назначенным) на 13.3 LTS до 15.3, только если владелец таблицы запускает запрос.

Применяются дополнительные ограничения вычислений. См. следующий раздел.

Ограничения

Ниже приведены ограничения при использовании каталога Unity с разностными динамическими таблицами:

  • По умолчанию только администраторы конвейера и администраторы рабочей области могут просматривать журналы драйверов из кластера, на котором запущен конвейер с поддержкой каталога Unity. Чтобы разрешить другим пользователям доступ к журналам драйверов, см. статью "Разрешить пользователям, не администраторам, просматривать журналы драйверов из конвейера с поддержкой каталога Unity".

  • Существующие конвейеры, использующие хранилище метаданных Hive, нельзя обновить для использования каталога Unity. Чтобы перенести существующий конвейер, который записывается в хранилище метаданных Hive, необходимо создать новый конвейер и повторно принять данные из источника данных.

  • Невозможно создать конвейер с поддержкой каталога Unity в рабочей области, подключенной к хранилищу метаданных, созданному в общедоступной предварительной версии каталога Unity. См. раздел "Обновление до наследования привилегий".

  • JAR не поддерживаются. Поддерживаются только сторонние библиотеки Python. См. статью "Управление зависимостями Python" для конвейеров delta Live Tables.

  • Запросы языка обработки данных (DML), изменяющие схему потоковой таблицы, не поддерживаются.

  • Материализованное представление, созданное в конвейере Delta Live Tables, нельзя использовать в качестве источника потоковой передачи за пределами этого конвейера, например в другом конвейере или нижней записной книжке.

  • Если конвейер публикуется в схеме с управляемым расположением хранилища, схема может быть изменена в последующем обновлении, но только если обновленная схема использует то же расположение хранилища, что и ранее указанная схема.

  • Таблицы хранятся в расположении хранилища для целевой схемы. Если расположение хранилища схемы не указано, таблицы хранятся в расположении хранилища каталога. Если расположения хранилища схемы и каталога не указаны, таблицы хранятся в корневом расположении хранилища метаданных.

  • Вкладка "Журнал обозревателя каталогов" не отображает журнал для материализованных представлений.

  • Свойство LOCATION не поддерживается при определении таблицы.

  • Конвейеры с поддержкой каталога Unity не могут публиковаться в хранилище метаданных Hive.

  • Поддержка UDF Python доступна в общедоступной предварительной версии.

  • Разностный общий доступ нельзя использовать с материализованным представлением delta Live Table или таблицей потоковой передачи, опубликованной в каталоге Unity.

  • Вы не можете использовать табличную event_logфункцию в конвейере или запросе для доступа к журналам событий нескольких конвейеров.

  • Невозможно предоставить общий доступ к представлению, созданному event_logнад табличной функцией , с другими пользователями.

  • Кластеры с одним узлом не поддерживаются конвейерами с поддержкой каталога Unity. Так как разностные динамические таблицы могут создавать кластер с одним узлом для запуска небольших конвейеров, конвейер может завершиться ошибкой при ссылке на сообщение об ошибке single-node mode. Если это происходит, укажите по крайней мере одну рабочую роль при настройке вычислений. Сведения о настройке вычислений для конвейера Delta Live Tables.

Примечание.

Базовые файлы, поддерживающие материализованные представления, могут включать данные из вышестоящих таблиц (включая возможные личные сведения), которые не отображаются в определении материализованного представления. Эти данные автоматически добавляются в базовое хранилище для поддержки добавочного обновления материализованных представлений.

Поскольку базовые файлы материализованного представления могут рисковать предоставлением данных из вышестоящих таблиц, не входящих в схему материализованного представления, Databricks рекомендует не предоставлять общий доступ к базовому хранилищу с ненадежными подчиненными потребителями.

Например, предположим, что определение материализованного представления содержит COUNT(DISTINCT field_a) предложение. Несмотря на то, что определение материализованного представления содержит только предложение агрегирования COUNT DISTINCT , базовые файлы будут содержать список фактических значений field_a.

Можно ли совместно использовать хранилище метаданных Hive и конвейеры каталога Unity?

Рабочая область может содержать конвейеры, использующие каталог Unity и устаревшее хранилище метаданных Hive. Однако один конвейер не может записывать данные в хранилище метаданных Hive и каталог Unity. Существующие конвейеры, записываемые в хранилище метаданных Hive, нельзя обновить для использования каталога Unity.

Существующие конвейеры, не использующие каталог Unity, не влияют на создание новых конвейеров, настроенных с помощью каталога Unity. Эти конвейеры продолжают сохранять данные в хранилище метаданных Hive с помощью настроенного расположения хранилища.

Если в этом документе не указано иное, все существующие источники данных и функциональные возможности Delta Live Tables поддерживаются конвейерами, используюющими каталог Unity. Интерфейсы Python и SQL поддерживаются конвейерами, используюющими каталог Unity.

Изменения существующих функциональных возможностей

Если разностные динамические таблицы настроены для сохранения данных в каталоге 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.
  • Автозагрузчик с помощью функции для чтения из внешних расположений read_files() каталога Unity.
  • Apache Kafka и Amazon Kinesis.

Ниже приведены примеры чтения из каталога Unity и таблиц хранилища метаданных Hive.

Прием пакетной службы из таблицы каталога Unity

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.read.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 MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.read.table("hive_metastore.some_schema.table")

Прием данных из автозагрузчика

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  read_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.table_name
TO
  `user@databricks.com`

Отмена выбора таблицы

REVOKE SELECT ON TABLE
  my_catalog.my_schema.table_name
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), включая вставку, обновление, удаление и слияние, можно использовать для изменения таблиц потоковой передачи, опубликованных в каталоге 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;

Публикация таблиц с фильтрами строк и масками столбцов

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Фильтры строк позволяют указать функцию, которая применяется в качестве фильтра всякий раз, когда таблица сканирует строки. Эти фильтры гарантируют, что последующие запросы возвращают только строки, для которых предикат фильтра оценивается как true.

Маски столбцов позволяют маскировать значения столбца всякий раз, когда таблица сканирует строки. Будущие запросы для этого столбца возвращают результат вычисляемой функции вместо исходного значения столбца. Дополнительные сведения об использовании фильтров строк и маскировок столбцов см. в разделе "Фильтрация конфиденциальных данных таблицы" с помощью фильтров строк и маски столбцов.

Управление фильтрами строк и масками столбцов

Фильтры строк и маски столбцов для материализованных представлений и потоковых таблиц должны быть добавлены, обновлены или удалены с помощью инструкции CREATE OR REFRESH .

Подробный синтаксис для определения таблиц с фильтрами строк и масками столбцов см . в справочнике по языку SQL Delta Live Table и справочнике по языку Python для разностных динамических таблиц.

Поведение

Ниже приведены важные сведения при использовании фильтров строк или масок столбцов в конвейерах Delta Live Tables:

  • Обновление от имени владельца: когда обновление конвейера обновляет материализованное представление или потоковую таблицу, функции фильтра строк и маски столбцов выполняются с правами владельца конвейера. Это означает, что обновление таблицы использует контекст безопасности пользователя, создавшего конвейер. Функции, которые проверяют контекст пользователя (например CURRENT_USER , и IS_MEMBER) оцениваются с помощью контекста пользователя владельца конвейера.
  • Запрос. При запросе материализованного представления или потоковой таблицы функции, проверяющие контекст пользователя (например CURRENT_USER , и IS_MEMBER) оцениваются с помощью контекста пользователя вызывающего объекта. Этот подход применяет элементы управления безопасностью и доступом для определенных пользователей на основе контекста текущего пользователя.
  • При создании материализованных представлений по исходным таблицам, содержащим фильтры строк и маски столбцов, обновление материализованного представления всегда является полным обновлением. Полное обновление повторно обрабатывает все данные, доступные в источнике с помощью последних определений. Этот процесс проверяет, что политики безопасности в исходных таблицах оцениваются и применяются с наиболее актуальными данными и определениями.

Наблюдаемость

Используйте DESCRIBE EXTENDED, INFORMATION_SCHEMAили обозреватель каталога для проверки существующих фильтров строк и маски столбцов, которые применяются к заданному материализованному представлению или таблице потоковой передачи. Эта функция позволяет пользователям проверять и проверять меры доступа к данным и защиты для материализованных представлений и потоковых таблиц.