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


Использование каталога 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 см. в разделе "Каталоги". Сведения о схемах в каталоге Unity см. в разделе "Схемы".

Прием данных в конвейер каталога 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;