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


Создание внешнего расположения для подключения облачного хранилища к Azure Databricks

В этой статье описывается настройка внешнего расположения в каталоге Unity для подключения облачного хранилища к Azure Databricks.

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

Вы можете создать внешнее расположение, которое ссылается на хранилище в контейнере хранилища Azure Data Lake Storage 2-го поколения или контейнере Cloudflare R2.

Вы можете создать внешнее расположение с помощью обозревателя каталогов, интерфейса командной строки Databricks, команд SQL в записной книжке или sql-запросе Databricks или Terraform.

Примечание.

При определении тома облачный URI-код ресурса (URI) к данным в пути тома регулируется разрешениями тома.

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

Необходимые условия:

Требования к разрешениям:

  • У вас должны быть CREATE EXTERNAL LOCATION права на хранилище метаданных и учетные данные хранилища, на которые ссылается внешнее расположение. Администраторы хранилища метаданных имеют CREATE EXTERNAL LOCATION хранилище метаданных по умолчанию.

Создание внешнего расположения с помощью обозревателя каталогов

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

Разрешения и предварительные требования: см. статью "Перед началом работы".

Чтобы создать внешнее расположение, выполните следующие действия.

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

  2. На боковой панели щелкните Значок каталога"Каталог".

  3. Нажмите кнопку +Добавить и выберите "Добавить внешнее расположение".

  4. Введите имя внешнего расположения.

  5. При необходимости скопируйте путь контейнера из существующей точки подключения (только Azure Data Lake Storage 2-го поколения контейнеров).

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

    Например, abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path> или r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>.

  7. Выберите учетные данные хранилища, которые предоставляют доступ к внешнему расположению.

  8. (Необязательно) Если у пользователей есть доступ только для чтения к внешнему расположению, нажмите кнопку "Дополнительные параметры " и выберите " Только чтение". Дополнительные сведения см. в разделе "Пометить внешнее расположение как доступное только для чтения".

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

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

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

  11. Предоставьте разрешение на использование внешнего расположения.

    Чтобы любой пользователь мог использовать внешнее расположение, необходимо предоставить разрешения:

    • Чтобы использовать внешнее расположение для добавления управляемого хранилища в хранилище метаданных, каталог или схему, предоставьте этому привилегию CREATE MANAGED LOCATION .
    • Создание внешних таблиц или томов, предоставление CREATE EXTERNAL TABLE или CREATE EXTERNAL VOLUME.

    Чтобы использовать обозреватель каталогов для предоставления разрешений:

    1. Щелкните имя внешнего расположения, чтобы открыть область сведений.
    2. На вкладке "Разрешения" нажмите кнопку "Предоставить".
    3. В диалоговом окне "Предоставление"<external location>выберите пользователей, группы или субъекты-службы в поле "Субъекты" и выберите привилегию, которую вы хотите предоставить.
    4. Нажмите кнопку "Предоставить".

Создание внешнего расположения с помощью SQL

Чтобы создать внешнее расположение с помощью SQL, выполните следующую команду в записной книжке или редакторе sql-запросов. Замените значения заполнителей.

Разрешения и предварительные требования: см. статью "Перед началом работы".

  • <location-name>: имя внешнего расположения. Если location_name он включает специальные символы, например дефисы (-), он должен быть окружен обратными знаками (` `). См . имена.

  • <bucket-path>: путь в облачном клиенте, к которому это внешнее расположение предоставляет доступ. Например, abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path> или r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>.

  • <storage-credential-name>: имя учетных данных хранения, которые разрешают чтение и запись в контейнер хранилища или путь к контейнеру хранилища. Если имя учетных данных хранилища содержит специальные символы, например дефисы (-), он должен быть окружен обратными знаками (` `).

CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

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

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

Внимание

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

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

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

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

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

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

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

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

Примечание.

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

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

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

  2. На боковой панели щелкните Значок каталога"Каталог".

  3. В нижней части экрана щелкните внешние расположения внешних данных>.

  4. Выберите внешнее расположение и перейдите на вкладку "Рабочие области ".

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

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

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

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

API

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

  1. external-locations Используйте API, чтобы задать для внешних расположений isolation modeISOLATION_MODE_ISOLATEDзначение :

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

    Значение по умолчанию isolation modeISOLATION_MODE_OPEN для всех рабочих областей, подключенных к хранилищу метаданных. См . справочник по внешним расположениям в справочнике по REST API.

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

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

    "add""remove" Используйте свойства для добавления или удаления привязок рабочей области.

    Примечание.

    Привязка только для чтения (BINDING_TYPE_READ_ONLY) недоступна для внешних расположений. Поэтому для привязки внешних расположений нет причин binding_type .

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

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

См . статью "Привязки рабочей области" в справочнике по REST API.

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

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

Следующие шаги