Как использовать пакет SDK для Azure Python для подготовки службы Databricks?

[Ранее в этом посте я спрашивал, как предоставлять службы блоков данных без какого-либо рабочего пространства. Теперь я спрашиваю, как предоставить сервису рабочее пространство, поскольку первый сценарий кажется невыполнимым.]

Как облачного администратора меня просят написать сценарий с использованием пакета SDK для Azure Python, который предоставит службу Databricks для одной из наших групп разработчиков больших данных.

Я не могу найти много информации о Databricks в пакете SDK для Azure Python, кроме https://azuresdkdocs.blob.core.windows.net/$web/python/azure-mgmt-databricks/0.1.0/azure.mgmt.databricks.operations.html

а также

https://azuresdkdocs.blob.core.windows.net/$web/python/azure-mgmt-databricks/0.1.0/azure.mgmt.databricks.html

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

Что мне не хватает?

РЕДАКТИРОВАТЬ:

Спасибо @Laurent Mazuel и @Jim Xu за их помощь.

Вот код, который я запускаю сейчас, и полученная ошибка:

client = DatabricksClient(credentials, subscription_id)
workspace_obj = client.workspaces.get("example_rg_name", "example_databricks_workspace_name")
WorkspacesOperations.create_or_update(
workspace_obj,
"example_rg_name",
"example_databricks_workspace_name",
custom_headers=None,
raw=False,
polling=True
)

ошибка:

TypeError: create_or_update() missing 1 required positional argument: 'workspace_name'

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

Я также пробовал следующий код:

client = DatabricksClient(credentials, subscription_id)
workspace_obj = client.workspaces.get("example_rg_name", "example_databricks_workspace_name")
client.workspaces.create_or_update(
workspace_obj,
"example_rg_name",
"example_databricks_workspace_name"
)

Что приводит к:

 Traceback (most recent call last):
   File "./build_azure_visibility_core.py", line 112, in <module>
     ca_databricks.create_or_update_databricks(SUB_PREFIX)
   File "/home/gitlab-runner/builds/XrbbggWj/0/SA-Cloud/azure-visibility-core/expd_az_databricks.py", line 34, in create_or_update_databricks
     self.databricks_workspace_name
   File "/home/gitlab-runner/builds/XrbbggWj/0/SA-Cloud/azure-visibility-core/azure-visibility-core/lib64/python3.6/site-packages/azure/mgmt/databricks/operations/workspaces_operations.py", line 264, in create_or_update
     **operation_config
   File "/home/gitlab-runner/builds/XrbbggWj/0/SA-Cloud/azure-visibility-core/azure-visibility-core/lib64/python3.6/site-packages/azure/mgmt/databricks/operations/workspaces_operations.py", line 210, in _create_or_update_initial
     body_content = self._serialize.body(parameters, 'Workspace')
   File "/home/gitlab-runner/builds/XrbbggWj/0/SA-Cloud/azure-visibility-core/azure-visibility-core/lib64/python3.6/site-packages/msrest/serialization.py", line 589, in body
     raise ValidationError("required", "body", True)
 msrest.exceptions.ValidationError: Parameter 'body' can not be None.
 ERROR: Job failed: exit status 1

Итак, строка 589 в serialization.py содержит ошибку. Я не вижу, где ошибка в моем коде вызывает это. Спасибо всем, кто был щедрым, чтобы помочь!


person mike_butak    schedule 14.07.2020    source источник


Ответы (2)


вам нужно создать клиент блока данных, и к нему будут прикреплены рабочие области:

client = DatabricksClient(credentials, subscription_id)
workspace = client.workspaces.get(resource_group_name, workspace_name)

Я не думаю, что создание службы без рабочей области возможно, пытаясь создать службу Databricks на портале, вы увидите, что имя рабочей области также требуется, поэтому, используя SDK, я бы посмотрел документ для client.workspaces.create_or_update

(Я работаю в MS в команде SDK)

person Laurent Mazuel    schedule 14.07.2020

С помощью @Laurent Mazuel и инженеров службы поддержки Microsoft у меня есть решение:

managed_resource_group_ID = ("/subscriptions/"+sub_id+"/resourceGroups/"+managed_rg_name)
client = DatabricksClient(credentials, subscription_id)
workspace_obj = client.workspaces.get(rg_name, databricks_workspace_name)
client.workspaces.create_or_update(
    {
        "managedResourceGroupId": managed_resource_group_ID,
        "sku": {"name":"premium"},
        "location":location
    },
    rg_name,
    databricks_workspace_name
).wait()
person mike_butak    schedule 23.07.2020