Подключение хранилища больших двоичных объектов Azure к Azure Databricks без использования кластера

#azure-devops #azure-databricks

#azure-devops #azure-databricks

Вопрос:

У нас есть требование, чтобы при предоставлении сервиса Databricks через конвейер CI / CD в Azure DevOps мы могли подключать хранилище больших двоичных объектов к DBFS без подключения к кластеру. Возможно ли подключить хранилище объектов к кластеру DBFS с помощью bash-скрипта из Azure DevOps?

Я просмотрел различные форумы, но все они упоминают о выполнении этого с помощью dbutils.fs.mount но проблема в том, что мы не можем запустить эту команду в Azure DevOps CI / CD pipeline.

Буду признателен за любую помощь по этому вопросу.

Спасибо

Ответ №1:

То, о чем вы просите, возможно, но для этого требуется немного дополнительной работы. В нашей организации мы пробовали различные подходы, и я некоторое время работал с Databricks. Наиболее подходящее для нас решение — написать скрипт bash, который использует databricks-cli в вашем конвейере Azure Devops. Наш подход заключается в следующем:

  1. Извлеките токен Databricks с помощью token API
  2. Настройте CLI Databricks в конвейере CI / CD
  3. Используйте CLI Databricks для загрузки сценария монтирования
  4. Создайте задание Databricks с помощью Jobs API и задайте сценарий монтирования в виде файла для выполнения

Все описанные выше шаги содержатся в скрипте bash, который является частью нашего конвейера Azure Devops.

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

https://learn.microsoft.com/en-US/azure/databricks/dev-tools/api/latest/tokens

Создайте сценарий монтирования
У нас есть скрипт scala, который следует инструкциям по монтированию. Это также может быть Python. Смотрите следующую ссылку для получения дополнительной информации:

https://docs.databricks.com/data/data-sources/azure/azure-datalake-gen2.html#mount-azure-data-lake-storage-gen2-filesystem .

Загрузите сценарий монтирования
В конвейере Azure Devops databricks-cli настраивается путем создания временного токена с использованием token API. Как только этот шаг будет выполнен, мы можем свободно использовать CLI для загрузки нашего сценария монтирования в DBFS или импортировать его в виде записной книжки с помощью Workspace API.

https://learn.microsoft.com/en-US/azure/databricks/dev-tools/api/latest/workspace#—import

Настройте задание, которое фактически подключает ваше хранилище
У нас есть файл JSON, который определяет задание, выполняющее скрипт «подключить хранилище». Вы можете определить задание для использования скрипта / записной книжки, которые вы загрузили на предыдущем шаге. Вы можете легко определить задание с помощью JSON, ознакомьтесь с тем, как это делается, в документации Jobs API:

https://learn.microsoft.com/en-US/azure/databricks/dev-tools/api/latest/jobs#—

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

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

Я надеюсь, что это поможет вам. Дайте мне знать, если у вас возникнут какие-либо вопросы!

Комментарии:

1. Привет, Дж. Оффенберг, спасибо, что поделились этой информацией. Загвоздка здесь в том, что у нас не будет никакого токена для подключения к рабочему пространству Databricks после его подготовки через шаблон ARM, так как же будет сгенерирован токен или как скрипт bash авторизует генерирование токена через token api?

2. Кроме того, если вы можете поделиться примером запуска простого скрипта python с помощью этого задания, либо с помощью опции spark-submit, либо JAR, это будет действительно полезно.

3. Наша среда Databricks также предоставляется через ARM. Мы используем участника-службу для запроса токена доступа. По этой ссылке показано, как получить токен с помощью участника-службы. Существует также пример запроса Bash. Дайте мне знать, если это поможет. learn.microsoft.com/en-us/azure/databricks/dev-tools/api/latest /…

4. @NGupta удалось решить ваш кейс? Не могли бы вы принять ответ, если это помогло вам?

5. Спасибо, что поделились входными данными, это нам очень помогло. Просто быстрый ввод — можем ли мы использовать скрипт инициализации в кластере, чтобы проверить, доступна ли точка подключения, и если нет, то точку подключения можно создать? Что вы думаете по этому поводу?