Обновление версии рабочей области Azure Databricks до Unity Catalog

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

Общие сведения о шагах обновления

Чтобы обновить каталог Unity, необходимо:

  1. Предоставьте удостоверения (пользователей, групп и субъектов-служб) напрямую в вашу учетную запись Azure Databricks, если вы еще этого не сделали. Отключите выдачу удостоверений на уровне рабочей области.
  2. Преобразуйте все локальные группы рабочей области в группы на уровне учетной записи. Каталог Unity централизует управление идентификацией на уровне учетной записи.
  3. Подключите рабочую область к хранилищу метаданных каталога Unity. Если хранилище метаданных для региона рабочей области не существует, администратор учетной записи должен создать его.
  4. Перевод таблиц и представлений, управляемых в хранилище метаданных Hive, в каталог Unity.
  5. Предоставьте пользователям, группам или субъектам-службам уровня учетной записи доступ к обновленным таблицам.
  6. Обновите запросы и задания, чтобы ссылаться на новые таблицы каталога Unity вместо старых таблиц хранилища метаданных Hive.
  7. Перенос файлов, записных книжек и сценариев из DBFS.
  8. Обновите активные вычислительные ресурсы до поддерживаемых версий среды выполнения Databricks.
  9. Отключите доступ к устаревшим функциям в рабочих областях. См. раздел "Отключить доступ к устаревшим функциям в рабочих областях".

UCX, проект Databricks Labs, предоставляет средства, которые помогают обновить рабочую область, не относящуюся к Unity-Catalog, до каталога Unity. UCX — это хороший выбор для крупномасштабных миграций. См. Используйте утилиты UCX для обновления рабочей области до Unity Catalog.

Перед началом работы

Прежде чем начать, ознакомьтесь с основными понятиями каталога Unity, включая хранилища метаданных и управляемое хранилище. См. статью Что такое Unity Catalog?

Кроме того, необходимо убедиться, что выполнены следующие требования:

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

    Первый администратор учетной записи Azure Databricks должен быть глобальным администратором Microsoft Entra ID в момент первого входа в консоль учетной записи Azure Databricks. После первого входа этот пользователь становится администратором учетной записи Azure Databricks и больше не нуждается в роли глобального администратора Microsoft Entra ID, чтобы получить доступ к учетной записи Azure Databricks. Первый администратор учетной записи может назначать пользователей в клиенте Microsoft Entra ID в качестве дополнительных администраторов учетных записей (которые могут назначать других администраторов учетных записей). Дополнительные администраторы учетных записей не требуют определенных ролей в идентификаторе Microsoft Entra.

  • Рабочие области, которые вы присоединяете к хранилищу метаданных, должны находиться в плане Azure Databricks Premium.

Обновление до демонстрационных демонстраций каталога Unity

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

Кроме того, можно выполнить демонстрацию использования UCX для обновления до каталога Unity.

Назначение пользователей, групп и служебных учетных записей в вашу учетную запись

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

Преобразование локальных групп рабочей области в группы на уровне учетных записей

См. раздел "Миграция локальных групп рабочей области" в группы учетных записей.

Присоединение рабочей области к хранилищу метаданных

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

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

перевод таблиц в метахранилище Hive к таблицам каталога Unity

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

Вариант 1: Сначала федерация, затем обновление внешних таблиц

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

Сначала объедините хранилище метаданных Hive в качестве внешнего каталога в Unity Catalog. Это позволяет получить доступ к существующим таблицам через каталог Unity и подготовить их к обновлению.

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

Замечание

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

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

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

ALTER TABLE <foreign_catalog>.<schema>.<table_name> SET MANAGED MOVE;

Альтернативно, чтобы обновить иностранную таблицу до внешней таблицы Unity Catalog, выполните следующую команду:

ALTER TABLE <foreign_catalog>.<schema>.<table_name> SET EXTERNAL;

После того как ваши таблицы будут перенесены и вы больше не будете использовать федерацию с внешним каталогом, вы можете удалить подключение к внешнему каталогу:

ALTER CATALOG <foreign_catalog> DROP CONNECTION;

Дополнительные сведения об этом рабочем процессе см. в разделе "Внешние таблицы" с помощью SQL.

Вариант 2. Обновление таблиц напрямую

Если вы решили не использовать рабочий процесс обновления на основе федерации, вы можете обновить таблицы напрямую с помощью SYNC или CREATE TABLE AS SELECT. См. статью Обновление таблиц и представлений для Hive до Unity Catalog.

Предоставление доступа к обновленным или федеративных таблицам

Предоставьте пользователям, группам или субъектам-службам доступ к новым таблицам. См. раздел Управление привилегиями в каталоге Unity.

Обновление запросов и заданий для работы с обновленными таблицами и путями к данным

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

Аналогичным образом обновите запросы и задачи, которые используют доступ к файлам на основе пути, чтобы вместо этого использовать тома каталога Unity.

Подробные рекомендации см. в разделе "Обновление заданий при обновлении устаревших рабочих областей до Unity Catalog".

Отключение доступа к DBFS

В рамках миграции каталога Unity Databricks рекомендует отключить доступ к DBFS в рабочих областях. Это гарантирует, что все данные и рабочие процессы управляются каталогом Unity и используют все возможности каталога Unity.

Вы можете использовать скрипты сканера DBFS от Databricks Labs для сканирования вашего текущего использования DBFS и решения, следует ли регистрировать ресурс на месте (с помощью внешнего расположения), перенести в каталог Unity или архивировать, если он вам больше не нужен. Databricks Labs — это общедоступный репозиторий GitHub, который не поддерживается непосредственно Databricks.

В следующих разделах описывается перенос различных ресурсов из DBFS в каталог Unity.

Перенос файлов, хранящихся в DBFS

Если у вас есть необработанные файлы, такие как Parquet, CSV, JSON или изображения, хранящиеся в корневом каталоге DBFS (например, в корневом каталоге /FileStore) или в облачном хранилище, монтированном к DBFS (в разделе /mnt/...), переносите их с помощью томов каталога Unity, и обращайтесь к ним с помощью внешних расположений.

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

Создайте внешний филиал

Чтобы зарегистрировать ресурсы в каталоге Unity, настройте внешнее расположение каталога Unity для контейнера облачного хранилища или пути, в котором находятся файлы. Это можно сделать с помощью обозревателя каталогов, команд SQL, Terraform или Интерфейса командной строки Azure Databricks.

Подробные инструкции см. в статье "Подключение к облачному хранилищу объектов" с помощью каталога Unity.

Создание тома

Тома каталога Unity предоставляют управляемый способ упорядочивания файлов. Databricks рекомендует использовать тома для управления всеми нетабличными данными. Внешний том можно создать в схеме, которая ссылается на подпуть внешнего расположения. Рассмотрим пример.

USE CATALOG main;
USE SCHEMA data;
CREATE VOLUME IF NOT EXISTS raw_files
LOCATION 'my_data_loc/csv-files/';

Все файлы в этом пути теперь доступны через внешнее местоположение и управляются разрешениями каталога Unity.

Дополнительные сведения см. в разделе "Что такое тома каталога Unity?".

Копирование файлов из корня DBFS

Если файлы были ранее сохранены в корневом каталоге DBFS, скопируйте их в путь к облачному хранилищу. Например, в записной книжке:

dbutils.fs.cp(
  "dbfs:/FileStore/tables/data.csv",
  "/Volumes/main/data/raw_files/data.csv"
)

Подсказка

Если у вас есть большое количество файлов или файлов, размер которых превышает несколько ГБ, рекомендуется использовать интерфейс командной строки Azure Databricks или распределенную копию с помощью Apache Spark для параллелизации перемещения. Команда AZURE Databricks CLI fs cp может рекурсивно копировать каталоги.

Проверьте перенесённые файлы

После миграции просматривайте и читайте файлы из томов с помощью стандартных команд.

# List files in the volume
dbutils.fs.ls("/Volumes/main/data/raw_files/")

# Read a CSV file into a DataFrame
df = spark.read.option("header", True).csv(
  "/Volumes/main/data/raw_files/2024-01-01-data.csv"
)

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

Очистка креплений DBFS

После проверки доступности файлов в новом расположении отключите старые точки подключения DBFS, чтобы предотвратить путаницу или случайное использование:

dbutils.fs.unmount("/mnt/oldpath")

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

Перенос ресурсов рабочей области из DBFS

В некоторых рабочих областях есть записные книжки, файлы кода или справочные скрипты, хранящиеся в DBFS. К ним относятся:

  • Записные книжки, сохраненные как файлы HTML или DBC для совместного использования в /FileStore
  • Скрипты Python или JAR-файлы, используемые в заданиях Azure Databricks
  • Скрипты инициализации в области вычислений (например, dbfs:/databricks/init/...)

Записные книжки и код должны храниться в виде файлов рабочей области или в папках Git, а не в DBFS. DBFS не предоставляет контроль доступа для каждого файла и не должен использоваться для исходного кода или записных книжек.

  • Записные книжки. Если у вас есть записные книжки в качестве файлов в DBFS, импортируйте их в рабочую область Azure Databricks. Это можно сделать вручную с помощью функции импорта пользовательского интерфейса или с помощью интерфейса командной строки. Убедитесь, что разрешения записной книжки в рабочей области настроены соответствующим образом для доступа команды. Сохраняйте записные книжки в виде объектов рабочей области или в папках Git и используйте Git для управления версиями.
  • Скрипты заданий: если задания настроены для запуска скрипта Python из DBFS (например, задание с типом задачи "Скрипт Python" со ссылкой dbfs:/mnt/scripts/my_etl.pyна скрипт Python), переместите эти скрипты в файлы рабочей области. Управление ими в папке Git для управления версиями и отслеживания изменений.
  • Создание артефактов и библиотек: ресурсы, такие как JAR-файлы и колеса Python, должны храниться в томах каталога Unity.
  • Инициализационные скрипты с ограничением на вычислительные ресурсы: такие скрипты должны храниться в volumes каталога Unity. См. статью "Что такое скрипты инициализации?".

Поиск и перенос вычислительных ресурсов в поддерживаемые версии Databricks Runtime и режимы доступа

Замечание

В этом разделе содержатся запросы, которые обращаются к system.compute.clusters таблице. Чтобы получить доступ к этой системной таблице, необходимо быть администратором учетной записи Azure Databricks или иметь предоставленные разрешения USE и SELECT на системную схему compute. См . раздел "Предоставление доступа к системным таблицам".

В рамках миграции каталога Unity Databricks рекомендует обновить все вычислительные ресурсы и задания до Databricks Runtime 13.3 LTS или более поздней версии и использовать режимы доступа к каталогу Unity.

Чтобы вручную просмотреть вычислительные ресурсы в рабочей области, перейдите на страницу вычислений рабочей области. В разделе "Все назначения вычислений " просмотрите версию среды выполнения Databricks для каждого вычисления. Сортируйте или фильтруйте по версии, чтобы определить кластеры, запускаемые на версиях ниже 13.3 LTS. Повторите для раздела Job compute, так как задания можно настроить на использование определённой версии среды выполнения Databricks.

Для программного поиска версий вычислительных платформ ниже 13.3 LTS выполните запрос в таблице system.compute.clusters. Рассмотрим пример.

SELECT
  workspace_id,
  cluster_id,
  dbr_version
FROM system.compute.clusters
WHERE
  TRY_CAST(SPLIT(dbr_version, '\\.')[0] AS INT) < 13
  OR (
    TRY_CAST(SPLIT(dbr_version, '\\.')[0] AS INT) = 13
    AND TRY_CAST(SPLIT(dbr_version, '\\.')[1] AS INT) < 3
  );

При этом будет возвращен список универсальных вычислительных ресурсов и вычислительных ресурсов заданий, использующих версии ниже 13.3 LTS.

Обновление вычислений до поддерживаемых режимов доступа

Если у вас все еще выполняются вычисления в режиме совместного доступа без изоляции, вы можете обновить их до поддерживаемых режимов доступа. См. режимы доступа. Чтобы запросить вычисления, выполняемые в режиме общего доступа без изоляции, запросите таблицу system.compute.clusters . Рассмотрим пример.

SELECT
  workspace_id,
  cluster_id,
  dbr_version,
  data_security_mode
FROM system.compute.clusters
WHERE data_security_mode IN ('NONE','NO_ISOLATION')
LIMIT 100;

Отключите доступ к устаревшим функциям в рабочих областях

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