Создание и администрирование каталогов

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

Примечание.

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

Примечание.

Чтобы узнать, как создать внешний каталог, объект каталога Unity, который зеркало базу данных во внешней системе данных, см. статью "Создание внешнего каталога". См. также статью "Управление и работа с иностранными каталогами".

Требования

Создание каталога:

  • Вы должны быть администратором хранилища метаданных Azure Databricks или иметь CREATE CATALOG права на хранилище метаданных.

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

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

    Хранилища SQL всегда поддерживают каталог Unity.

Создание каталога

Чтобы создать каталог, можно использовать Обозреватель каталога или команду SQL.

Обозреватель каталогов

  1. Войдите в рабочую область, связанную с хранилищем метаданных.

  2. Щелкните Значок каталогакаталог.

  3. Нажмите кнопку Создать каталог.

  4. Выберите тип каталога, который требуется создать:

    • Стандартный каталог: защищаемый объект, который упорядочивает ресурсы данных, управляемые каталогом Unity. Для всех вариантов использования, кроме Федерации Lakehouse.
    • Внешний каталог: защищаемый объект в каталоге Unity, который зеркало базу данных во внешней системе данных с помощью Федерации Lakehouse. Общие сведения о настройке федерации Lakehouse.
  5. (Необязательно, но настоятельно рекомендуется) Укажите расположение управляемого хранилища. Требуется привилегия CREATE MANAGED STORAGE в целевом внешнем расположении. См. раздел "Указание расположения управляемого хранилища" в каталоге Unity.

    Внимание

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

  6. Нажмите кнопку Создать.

  7. (Необязательно) Укажите рабочую область, к которому привязан каталог.

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

    Дополнительные сведения см. в разделе (Необязательно) Назначение каталога определенным рабочим областям.

  8. Назначьте разрешения для каталога. См. статью Защищаемые объекты и привилегии Unity Catalog.

SQL

  1. Выполните следующую команду SQL в записной книжке или редакторе SQL Databricks. Элементы в квадратных скобках являются необязательными. Замените значения-заполнители:

    • <catalog-name> — имя каталога.

    • <location-path>: необязательно, но настоятельно рекомендуется. Укажите путь к расположению хранилища, если вы хотите, чтобы управляемые таблицы в этом каталоге хранились в расположении, отличном от корневого хранилища по умолчанию, настроенном для хранилища метаданных.

      Внимание

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

      Этот путь должен быть определен в конфигурации внешнего расположения, и у вас должна CREATE MANAGED STORAGE быть привилегия в конфигурации внешнего расположения. Можно использовать путь, определенный в конфигурации внешнего расположения или подпате (другими словами, 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' или 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance/product'). Требуется Databricks Runtime 11.3 и более поздних версий.

    • <comment>: необязательное описание или другое примечание.

    Примечание.

    Если вы создаете внешний каталог (защищаемый объект в каталоге Unity, который зеркало базу данных во внешней системе данных, используемую для федерации Lakehouse), то команда SQL отличаетсяCREATE FOREIGN CATALOG. См. раздел "Создание внешнего каталога".

    CREATE CATALOG [ IF NOT EXISTS ] <catalog-name>
       [ MANAGED LOCATION '<location-path>' ]
       [ COMMENT <comment> ];
    

    Например, чтобы создать каталог с именем example:

    CREATE CATALOG IF NOT EXISTS example;
    

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

    Описание параметров см. в разделе CREATE CATALOG.

  2. Назначьте каталогу привилегии. См. статью Защищаемые объекты и привилегии Unity Catalog.

При создании каталога автоматически создаются две схемы (базы данных): default и information_schema.

Вы также можете создать каталог с помощью поставщика Databricks Terraform и databricks_catalog. Сведения о каталогах можно получить с помощью databricks_catalogs.

(Необязательно) Назначение каталога определенным рабочим областям

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

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

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

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

Пример привязки к каталогу рабочей области

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

Схема привязки к каталогу рабочей области

На этой схеме prod_catalog привязано к двум рабочим рабочим областям. Предположим, что пользователю предоставлен доступ к таблице с prod_catalog именем my_table (с помощью GRANT SELECT ON my_table TO <user>). Если пользователь пытается получить доступ my_table в рабочей области разработки, он получает сообщение об ошибке. Пользователь может получить доступ my_table только из рабочих областей Prod ETL и Prod Analytics.

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

Привязка каталога к одной или нескольким рабочим областям

Чтобы назначить каталог определенным рабочим областям, можно использовать Обозреватель каталога или REST API каталога Unity.

Необходимые разрешения: администратор хранилища метаданных или владелец каталога.

Примечание.

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

Обозреватель каталогов

  1. Войдите в рабочую область, связанную с хранилищем метаданных.

  2. Щелкните Значок каталогакаталог.

  3. В области каталога слева щелкните имя каталога.

    Основная область каталога Обозреватель по умолчанию используется в списке каталогов. Вы также можете выбрать каталог там.

  4. На вкладке "Рабочие области" снимите флажок "Все рабочие области" с доступом проверка box.

    Если каталог уже привязан к одной или нескольким рабочим областям, этот проверка box уже очищается.

  5. Нажмите кнопку " Назначить рабочим областям" и введите или найдите рабочие области, которые вы хотите назначить.

  6. (Необязательно) Ограничение доступа к рабочей области только для чтения.

    В меню "Управление уровнем доступа" выберите "Изменить доступ только для чтения".

    Вы можете изменить этот выбор в любое время, изменив каталог и выбрав "Изменить доступ к чтению и записи".

Чтобы отменить доступ, перейдите на вкладку "Рабочие области" , выберите рабочую область и нажмите кнопку "Отозвать".

Api

Существует два API и два шага, необходимые для назначения каталога рабочей области. В следующих примерах замените <workspace-url> имя экземпляра рабочей области. Сведения о том, как получить имя экземпляра рабочей области и идентификатор рабочей области, см. в статье "Получение идентификаторов для объектов рабочей области". Дополнительные сведения о получении маркеров доступа см. в статье "Проверка подлинности для автоматизации Azure Databricks".

  1. catalogs Используйте API, чтобы задать для каталога isolation modeISOLATEDзначение :

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/catalogs/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
     "isolation_mode": "ISOLATED"
     }'
    

    Значение по умолчанию isolation modeOPEN для всех рабочих областей, подключенных к хранилищу метаданных.

  2. Используйте API обновления bindings для назначения рабочих областей каталогу:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "add": [{"workspace_id": <workspace-id>, "binding_type": <binding-type>}...],
      "remove": [{"workspace_id": <workspace-id>, "binding_type": "<binding-type>}...]
    }'
    

    "add""remove" Используйте свойства для добавления или удаления привязок рабочей области. <binding-type> может быть либо “BINDING_TYPE_READ_WRITE” (по умолчанию), либо “BINDING_TYPE_READ_ONLY”.

Чтобы вывести список всех назначений рабочих областей для каталога, используйте API списка bindings :

   curl -L -X GET 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
   -H 'Authorization: Bearer <my-token> \

Отмена привязки каталога из рабочей области

Инструкции по отмене доступа к рабочей области к каталогу с помощью Обозреватель каталога или bindings API включены в привязку каталога к одной или нескольким рабочим областям.

Внимание

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

Добавление схем в каталог

Сведения о добавлении схем (баз данных) в каталог. см. статью "Создание схем (баз данных)" и управление ими.

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

Для просмотра сведений о каталоге можно использовать Обозреватель каталога или команду SQL.

Обозреватель каталогов

  1. Войдите в рабочую область, связанную с хранилищем метаданных.

  2. Щелкните Значок каталогакаталог.

  3. В области "Каталог" найдите каталог и щелкните его имя.

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

SQL

Выполните следующую команду SQL в записной книжке или редакторе SQL Databricks. Элементы в квадратных скобках являются необязательными. Замените заполнитель <catalog-name>.

Дополнительные сведения см. в разделе "ОПИСАНИЕ КАТАЛОГА".

DESCRIBE CATALOG <catalog-name>;

Используется CATALOG EXTENDED для получения полных сведений.

Удаление каталога

Чтобы удалить (или удалить) каталог, можно использовать Обозреватель каталога или команду SQL. Чтобы удалить каталог, необходимо быть его владельцем.

Обозреватель каталогов

Вы должны удалить все схемы в каталоге, за исключением information_schema, прежде чем вы сможете удалить каталог. Сюда входит автоматически созданная схема default.

  1. Войдите в рабочую область, связанную с хранилищем метаданных.
  2. Щелкните Значок каталогакаталог.
  3. В области каталога слева щелкните каталог, который нужно удалить.
  4. В области сведений щелкните меню с многоточием слева от кнопки Создать базу данных и выберите Удалить.
  5. В диалоговом окне Удаление каталога щелкните Удалить.

SQL

Выполните следующую команду SQL в записной книжке или редакторе SQL Databricks. Элементы в квадратных скобках являются необязательными. Замените заполнитель <catalog-name>.

Описание параметров см. в статье DROP CATALOG.

Если вы используете DROP CATALOG без параметра CASCADE, вы должны удалить все схемы в каталоге, за исключением information_schema, прежде чем вы сможете удалить каталог. Сюда входит автоматически созданная схема default.

DROP CATALOG [ IF EXISTS ] <catalog-name> [ RESTRICT | CASCADE ]

Например, чтобы удалить каталог с именем vaccine и его схемы:

DROP CATALOG vaccine CASCADE

Управление каталогом по умолчанию

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

Администратор рабочей области может просматривать или переключать каталог по умолчанию с помощью пользовательского интерфейса Администратор Параметры. Вы также можете задать каталог по умолчанию для кластера с помощью конфигурации Spark.

Команды, которые не указывают каталог (например GRANT CREATE TABLE ON SCHEMA myschema TO mygroup), оцениваются для каталога в следующем порядке:

  1. Задан ли каталог для сеанса с помощью USE CATALOG инструкции или параметра JDBC?
  2. Задана ли конфигурация spark.databricks.sql.initial.catalog.namespace Spark в кластере?
  3. Существует ли набор каталога рабочей области по умолчанию для кластера?

Конфигурация каталога по умолчанию при включении каталога Unity

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

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

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

Изменение каталога по умолчанию

Администратор рабочей области может изменить каталог по умолчанию для рабочей области. Любой пользователь с разрешением на создание или изменение кластера может задать другой каталог по умолчанию для кластера.

Предупреждение

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

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

  1. Войдите в рабочую область в качестве администратора рабочей области.
  2. Щелкните имя пользователя в верхней строке рабочей области и выберите Параметры в раскрывающемся списке.
  3. Перейдите на вкладку Дополнительно.
  4. В каталоге по умолчанию для строки рабочей области введите имя каталога и нажмите кнопку "Сохранить".

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

Вы также можете переопределить каталог по умолчанию для определенного кластера, задав следующую конфигурацию Spark в кластере. Этот подход недоступен для хранилищ SQL:

spark.databricks.sql.initial.catalog.name

Инструкции см. в разделе "Конфигурация Spark".

Просмотр текущего каталога по умолчанию

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

Параметры администрирования

  1. Войдите в рабочую область в качестве администратора рабочей области.
  2. Щелкните имя пользователя в верхней строке рабочей области и выберите Параметры в раскрывающемся списке.
  3. Перейдите на вкладку Дополнительно.
  4. В каталоге по умолчанию для строки рабочей области просмотрите имя каталога.

SQL

Выполните следующую команду в записной книжке или запросе редактора SQL, работающем в хранилище SQL или в кластере, совместимом с каталогом Unity. Каталог рабочей области по умолчанию возвращается до тех пор, пока в сеансе не USE CATALOG задан параметр инструкции или JDBC, и если для кластера не spark.databricks.sql.initial.catalog.namespace задана конфигурация.

SELECT current_catalog();