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


Используйте каталог Unity в сочетании с декларативными потоками Lakeflow

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

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

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

Примечание.

В этой статье рассматриваются функции текущего режима публикации по умолчанию для конвейеров. Пайплайны, созданные до 5 февраля 2025 г., могут использовать устаревший режим публикации и виртуальную схему LIVE. См. LIVE схему (устаревшую версию).

Требования

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

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

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

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

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

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

  • Хранилища SQL
  • Стандартный режим доступа вычисления на Databricks Runtime версии 13.3 LTS или выше.
  • Режим выделенного доступа к вычислениям, если управление доступом с точной настройкой включено на выделенных вычислениях (то есть они работают на Databricks Runtime 15.4 или выше, и безсерверные вычисления включены для рабочего пространства). Дополнительные сведения см. в разделе "Детализированное управление доступом на выделенных вычислительных ресурсах".
  • Режим выделенного доступа вычислений с версиями 13.3 LTS по 15.3, только если запрос выполняет владелец таблицы.

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

Ограничения

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

  • Невозможно создать конвейер с поддержкой каталога Unity в рабочей области, подключенной к хранилищу метаданных, созданному в общедоступной предварительной версии каталога Unity. См. Обновление до наследования привилегий.
  • Файлы формата JAR не поддерживаются. Поддерживаются только сторонние библиотеки Python. См. статью "Управление зависимостями Python" для декларативных конвейеров Lakeflow.
  • Запросы языка обработки данных (DML), изменяющие схему потоковой таблицы, не поддерживаются.
  • Материализованное представление, созданное в конвейере, нельзя использовать как источник потока за пределами этого конвейера, например, в другом конвейере или в записной книжке ниже по потоку.
  • Данные для материализованных представлений и потоковых таблиц хранятся в местоположении хранения для содержащей схемы. Если расположение хранилища схемы не указано, таблицы хранятся в расположении хранилища каталога. Если расположения хранилища схемы и каталога не указаны, таблицы хранятся в корневом расположении хранилища метаданных.
  • На вкладке "Обозреватель Каталога" история не отображается для материализованных представлений.
  • Свойство LOCATION не поддерживается при определении таблицы.
  • Конвейеры обработки данных с поддержкой каталога Unity не могут публиковаться в хранилище метаданных Hive.
  • Нельзя использовать Delta Sharing с материализованным представлением или потоковой таблицей в декларативных конвейерах Lakeflow, опубликованных в каталоге Unity.

Примечание.

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

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

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

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

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

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

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

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

Когда декларативные конвейеры Lakeflow настроены для сохранения данных в каталоге Unity, конвейер управляет жизненным циклом и разрешениями таблицы. В результате:

  • Когда таблица удаляется из определения конвейера, при следующем обновлении конвейера соответствующий материализованный вид или запись в потоковой таблице будет отмечена как неактивная. Неактивные таблицы всё ещё можно запрашивать, но они не будут обновляться. Чтобы очистить материализованные представления или стриминговые таблицы, вы можете явно DROP таблицу.
    • Вы можете восстановить любые удалённые таблицы в течение 7 дней, используя команду UNDROP.
    • Чтобы сохранить прежнее поведение, при котором материализованное представление или запись из потоковой таблицы удаляется из Unity Catalog при следующем обновлении конвейера, задайте конфигурацию конвейера "pipelines.dropInactiveTables": "true". Фактические данные сохраняются в течение некоторого времени, чтобы их можно было восстановить, если они были удалены по ошибке. Данные могут быть восстановлены в течение 7 дней путем добавления материализованного представления или потоковой таблицы обратно в определение конвейера.
  • Удаление конвейера приводит к удалению всех таблиц, определенных в этом конвейере. В связи с этим изменением пользовательский интерфейс Декларативных конвейеров Lakeflow обновляется, предлагая вам подтвердить удаление конвейера.
  • Внутренние таблицы резервного копирования, включая те, которые использовались для поддержки AUTO CDC ... INTO, не доступны напрямую пользователям.

Запись таблиц в каталог Unity из декларативных конвейеров Lakeflow

Чтобы загрузить свои таблицы в каталог Unity, необходимо настроить пайплайн для взаимодействия с ним через рабочую область. Когда вы создаёте конвейер, выберите Unity Catalog в разделе «Параметры хранения», выберите каталог в выпадающем меню «Каталог» и выберите существующую схему или введите имя для новой схемы в выпадающем меню «Целевая схема». Дополнительные сведения о каталогах Unity см. в разделе Что такое каталоги в Azure Databricks?. Дополнительные сведения о схемах в каталоге Unity см. в статье Что такое схемы в Azure Databricks?.

Загрузка данных в конвейер Unity Catalog

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

  • Управляемые и внешние таблицы, представления, материальные представления и потоковые таблицы в Unity Catalog.
  • Таблицы и представления Hive metastore.
  • Автозагрузчик с помощью функции 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;

Питон

@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);

Питон

@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;

Питон

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

Организовать загрузку данных с Auto Loader

SQL

CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
  "/path/to/uc/external/location",
  format => "json"
)

Питон

@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
  `[email protected]`

Отменить разрешение SELECT с таблицы

REVOKE SELECT ON TABLE
  my_catalog.my_schema.table_name
FROM
  `[email protected]`

Предоставить привилегии на создание таблиц или создание материализованного представления

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

Просмотр родословной конвейера

Происхождение таблиц в декларативных конвейерах Lakeflow отображается в обозревателе каталогов. В пользовательском интерфейсе обозревателя каталогов отображаются входящие и исходящие таблицы для материализованных представлений или потоковых таблиц в конвейере с поддержкой Unity Catalog. Дополнительные сведения о происхождении каталога Unity см. в статье Просмотр происхождения данных с помощью каталога Unity.

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

добавление, изменение или удаление данных в потоковой таблице

Вы можете использовать операторы языка манипулирования данными (DML), включая insert, update, delete и merge, для изменения потоковых таблиц, опубликованных в Unity Catalog. Поддержка запросов 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 для декларативных конвейеров Lakeflow и справочнике по языку Python для декларативных конвейеров Lakeflow.

Поведение

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

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

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

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