Databricks SDK para Python
Neste artigo, você aprenderá a automatizar operações em contas, espaços de trabalho e recursos relacionados do Azure Databricks com o SDK do Databricks para Python. Este artigo complementa a documentação do Databricks SDK for Python em Read The Docs e os exemplos de código no repositório Databricks SDK for Python no GitHub.
Nota
Este recurso está em Beta e pode ser usado na produção.
Durante o período Beta, o Databricks recomenda que você fixe uma dependência na versão secundária específica do SDK do Databricks para Python da qual seu código depende. Por exemplo, você pode fixar dependências em arquivos como requirements.txt
para venv
, ou pyproject.toml
e poetry.lock
para Poetry. Para obter mais informações sobre como fixar dependências, consulte Ambientes virtuais e pacotes para venv
, ou Instalando dependências para poesia.
Antes de começar
Você pode usar o SDK do Databricks para Python de dentro de um bloco de anotações do Azure Databricks ou de sua máquina de desenvolvimento local.
- Para usar o SDK do Databricks para Python de dentro de um bloco de anotações do Azure Databricks, pule para Usar o SDK do Databricks para Python de um bloco de anotações do Azure Databricks.
- Para usar o Databricks SDK for Python de sua máquina de desenvolvimento local, conclua as etapas nesta seção.
Antes de começar a usar o Databricks SDK for Python, sua máquina de desenvolvimento deve ter:
- Autenticação do Azure Databricks configurada.
- Python 3.8 ou superior instalado. Para automatizar os recursos de computação do Azure Databricks, o Databricks recomenda que você tenha as versões principais e secundárias do Python instaladas que correspondam àquela instalada no recurso de computação do Azure Databricks de destino. Os exemplos deste artigo dependem da automação de clusters com o Databricks Runtime 13.3 LTS, que tem o Python 3.10 instalado. Para obter a versão correta, consulte Versões das notas de versão do Databricks Runtime e compatibilidade para a versão do Databricks Runtime do cluster.
- O Databricks recomenda que você crie e ative um ambiente virtual Python para cada projeto de código Python que você usa com o Databricks SDK for Python. Os ambientes virtuais Python ajudam a certificar-se de que o seu projeto de código está a utilizar versões compatíveis dos pacotes Python e Python (neste caso, o pacote Databricks SDK for Python). Este artigo explica como usar venv ou Potetry para ambientes virtuais Python.
Crie um ambiente virtual Python com venv
Do seu conjunto de terminais para o diretório raiz do seu projeto de código Python, execute o seguinte comando. Este comando instrui
venv
a usar Python 3.10 para o ambiente virtual e, em seguida, cria os arquivos de suporte do ambiente virtual em um diretório oculto nomeado.venv
dentro do diretório raiz do seu projeto de código Python.# Linux and macOS python3.10 -m venv ./.venv # Windows python3.10 -m venv .\.venv
Use
venv
para ativar o ambiente virtual. Consulte a documentação do venv para obter o comando correto a ser usado, com base no seu sistema operacional e tipo de terminal. Por exemplo, no macOS executandozsh
:source ./.venv/bin/activate
Você saberá que seu ambiente virtual é ativado quando o nome do ambiente virtual (por exemplo,
.venv
) é exibido entre parênteses imediatamente antes do prompt do terminal.Para desativar o ambiente virtual a qualquer momento, execute o comando
deactivate
.Você saberá que seu ambiente virtual será desativado quando o nome do ambiente virtual não for mais exibido entre parênteses antes do prompt do terminal.
Vá em frente para Introdução ao SDK do Databricks para Python.
Crie um ambiente virtual com o Poetry
Instale o Poetry, se ainda não o fez.
Do seu conjunto de terminais para o diretório raiz do seu projeto de código Python, execute o seguinte comando para instruir
poetry
a inicializar seu projeto de código Python para Poetry.poetry init
Poesia exibe vários prompts para você completar. Nenhum desses prompts é específico do Databricks SDK for Python. Para obter informações sobre esses prompts, consulte init.
Depois de concluir os prompts, o Poetry adiciona um
pyproject.toml
arquivo ao seu projeto Python. Para obter informações sobre opyproject.toml
arquivo, consulte O arquivo pyproject.toml.Com seu terminal ainda definido para o diretório raiz do seu projeto de código Python, execute o seguinte comando. Este comando instrui
poetry
a ler opyproject.toml
arquivo, instalar e resolver dependências, criar umpoetry.lock
arquivo para bloquear as dependências e, finalmente, criar um ambiente virtual.poetry install
Do seu conjunto de terminais para o diretório raiz do seu projeto de código Python, execute o seguinte comando para instruir
poetry
a ativar o ambiente virtual e entrar no shell.poetry shell
Você saberá que seu ambiente virtual está ativado e o shell é inserido quando o nome do ambiente virtual é exibido entre parênteses imediatamente antes do prompt do terminal.
Para desativar o ambiente virtual e sair do shell a qualquer momento, execute o comando
exit
.Você saberá que saiu do shell quando o nome do ambiente virtual não for mais exibido entre parênteses antes do prompt do terminal.
Para obter mais informações sobre como criar e gerenciar ambientes virtuais do Poetry, consulte Gerenciando ambientes.
Introdução ao SDK do Databricks para Python
Esta seção descreve como começar a usar o SDK do Databricks para Python a partir de sua máquina de desenvolvimento local. Para usar o SDK do Databricks para Python de dentro de um bloco de anotações do Azure Databricks, pule para Usar o SDK do Databricks para Python de um bloco de anotações do Azure Databricks.
Em sua máquina de desenvolvimento com a autenticação do Azure Databricks configurada, o Python já instalado e seu ambiente virtual Python já ativado, instale o pacote databricks-sdk (e suas dependências) do Python Package Index (PyPI), da seguinte maneira:
Venv
Use
pip
para instalar odatabricks-sdk
pacote. (Em alguns sistemas, talvez seja necessário substituirpip3
porpip
, aqui e por toda parte.)pip3 install databricks-sdk
Poesia
poetry add databricks-sdk
Para instalar uma versão específica do
databricks-sdk
pacote enquanto o SDK do Databricks para Python estiver em versão beta, consulte o histórico de versões do pacote. Por exemplo, para instalar a versão0.1.6
:Venv
pip3 install databricks-sdk==0.1.6
Poesia
poetry add databricks-sdk==0.1.6
Gorjeta
Para atualizar uma instalação existente do pacote Databricks SDK for Python para a versão mais recente, execute o seguinte comando:
Venv
pip3 install --upgrade databricks-sdk
Poesia
poetry add databricks-sdk@latest
Para mostrar os detalhes atuais
Version
e outros detalhes do pacote Databricks SDK for Python, execute o seguinte comando:Venv
pip3 show databricks-sdk
Poesia
poetry show databricks-sdk
Em seu ambiente virtual Python, crie um arquivo de código Python que importe o Databricks SDK for Python. O exemplo a seguir, em um arquivo nomeado
main.py
com o seguinte conteúdo, simplesmente lista todos os clusters em seu espaço de trabalho do Azure Databricks:from databricks.sdk import WorkspaceClient w = WorkspaceClient() for c in w.clusters.list(): print(c.cluster_name)
Execute seu arquivo de código Python, assumindo um arquivo chamado
main.py
, executando opython
comando:Venv
python3.10 main.py
Poesia
Se você estiver no shell do ambiente virtual:
python3.10 main.py
Se você não estiver no shell do ambiente virtual:
poetry run python3.10 main.py
Nota
Ao não definir nenhum argumento na chamada anterior para
w = WorkspaceClient()
, o SDK do Databricks para Python usa seu processo padrão para tentar executar a autenticação do Azure Databricks. Para substituir esse comportamento padrão, consulte a seção de autenticação a seguir.
Autentique o SDK do Databricks para Python com sua conta ou espaço de trabalho do Azure Databricks
Esta seção descreve como autenticar o SDK do Databricks para Python de sua máquina de desenvolvimento local para sua conta ou espaço de trabalho do Azure Databricks. Para autenticar o SDK do Databricks para Python de dentro de um bloco de anotações do Azure Databricks, pule para Usar o SDK do Databricks para Python de um bloco de anotações do Azure Databricks.
O SDK do Databricks para Python implementa o padrão de autenticação unificada do cliente Databricks, uma abordagem arquitetônica e programática consolidada e consistente para autenticação. Essa abordagem ajuda a tornar a configuração e a automação da autenticação com o Azure Databricks mais centralizadas e previsíveis. Ele permite que você configure a autenticação do Databricks uma vez e, em seguida, use essa configuração em várias ferramentas e SDKs do Databricks sem mais alterações na configuração de autenticação. Para obter mais informações, incluindo exemplos de código mais completos em Python, consulte Autenticação unificada do cliente Databricks.
Nota
O SDK do Databricks para Python ainda não implementou a autenticação de identidades gerenciadas do Azure.
Alguns dos padrões de codificação disponíveis para inicializar a autenticação Databricks com o Databricks SDK for Python incluem:
Use a autenticação padrão do Databricks seguindo um destes procedimentos:
- Crie ou identifique um perfil de configuração personalizado do Databricks com os campos necessários para o tipo de autenticação Databricks de destino. Em seguida, defina a
DATABRICKS_CONFIG_PROFILE
variável de ambiente como o nome do perfil de configuração personalizado. - Defina as variáveis de ambiente necessárias para o tipo de autenticação Databricks de destino.
Em seguida, instancie, por exemplo, um
WorkspaceClient
objeto com a autenticação padrão do Databricks da seguinte maneira:from databricks.sdk import WorkspaceClient w = WorkspaceClient() # ...
- Crie ou identifique um perfil de configuração personalizado do Databricks com os campos necessários para o tipo de autenticação Databricks de destino. Em seguida, defina a
A codificação rígida dos campos obrigatórios é suportada, mas não recomendada, pois corre o risco de expor informações confidenciais em seu código, como tokens de acesso pessoal do Azure Databricks. O exemplo a seguir codifica valores de token de host e acesso do Azure Databricks para autenticação de token Databricks:
from databricks.sdk import WorkspaceClient w = WorkspaceClient( host = 'https://...', token = '...' ) # ...
Consulte também Autenticação na documentação do Databricks SDK for Python.
Usar o SDK do Databricks para Python de um bloco de anotações do Azure Databricks
Você pode chamar a funcionalidade do SDK do Databricks para Python a partir de um bloco de anotações do Azure Databricks que tenha um cluster do Azure Databricks anexado com o SDK do Databricks para Python instalado. O SDK do Databricks para Python já está instalado em todos os clusters do Azure Databricks que usam o Databricks Runtime 13.3 LTS ou superior. Para clusters do Azure Databricks que usam o Databricks Runtime 12.2 LTS e inferior, você deve instalar o SDK do Databricks para Python primeiro. Consulte Etapa 1: Instalar ou atualizar o SDK do Databricks para Python.
Para ver o número da versão do SDK do Databricks para Python que é instalado por padrão para uma versão específica do Databricks Runtime, consulte a seção "Bibliotecas Python instaladas" das notas de versão do Databricks Runtime para essa versão do Databricks Runtime.
O SDK do Databricks para Python 0.6.0 e superior usa a autenticação padrão do bloco de anotações do Azure Databricks. A autenticação padrão do bloco de anotações do Azure Databricks depende de um token de acesso pessoal temporário do Azure Databricks que o Azure Databricks gera automaticamente em segundo plano para seu próprio uso. O Azure Databricks exclui esse token temporário depois que o bloco de anotações para de ser executado.
Importante
A autenticação padrão do bloco de anotações do Azure Databricks funciona apenas no nó do driver do cluster e não em qualquer um dos nós de trabalho ou executor do cluster.
O Databricks Runtime 13.3 LTS e superior suporta a autenticação de bloco de notas padrão do Azure Databricks com o SDK do Databricks para Python 0.1.7 ou superior instalado. O Databricks Runtime 10.4 LTS e superior suporta a autenticação de bloco de notas padrão do Azure Databricks com o SDK do Databricks para Python 0.1.10 ou superior instalado. No entanto, o Databricks recomenda que você instale ou atualize para o SDK do Databricks para Python 0.6.0 ou superior para máxima compatibilidade com a autenticação padrão do bloco de anotações do Azure Databricks, independentemente da versão do Databricks Runtime.
Você deve instalar ou atualizar o SDK do Databricks para Python no cluster do Azure Databricks se quiser chamar APIs no nível da conta do Azure Databricks ou se quiser usar um tipo de autenticação do Azure Databricks diferente da autenticação padrão do bloco de anotações do Azure Databricks, da seguinte maneira:
Authentication type | Databricks SDK para versões Python |
---|---|
Autenticação máquina a máquina (M2M) OAuth | 0.18.0 e superior |
Autenticação OAuth user-to-machine (U2M) | 0.19.0 e superior |
Autenticação ddo principal de serviço do Microsoft Entra ID | Todas as versões |
Autenticação da CLI do Azure | Todas as versões |
Autenticação de token de acesso pessoal Databricks | Todas as versões |
A autenticação de identidades gerenciadas do Azure ainda não é suportada.
A autenticação de bloco de anotações do Azure Databricks não funciona com perfis de configuração do Azure Databricks.
Etapa 1: Instalar ou atualizar o SDK do Databricks para Python
Os blocos de anotações Python do Azure Databricks podem usar o SDK do Databricks para Python como qualquer outra biblioteca Python. Para instalar ou atualizar a biblioteca do SDK do Databricks para Python no cluster do Azure Databricks anexado, execute o
%pip
comando magic a partir de uma célula do bloco de anotações da seguinte maneira:%pip install databricks-sdk --upgrade
Depois de executar o
%pip
comando magic, você deve reiniciar o Python para disponibilizar a biblioteca instalada ou atualizada para o notebook. Para fazer isso, execute o seguinte comando de uma célula do bloco de anotações imediatamente após a célula com o%pip
comando magic:dbutils.library.restartPython()
Para exibir a versão instalada do Databricks SDK for Python, execute o seguinte comando a partir de uma célula do bloco de anotações:
%pip show databricks-sdk | grep -oP '(?<=Version: )\S+'
Etapa 2: Execute seu código
Nas células do bloco de anotações, crie código Python que importe e chame o SDK do Databricks para Python. O exemplo a seguir usa a autenticação padrão do bloco de anotações do Azure Databricks para listar todos os clusters em seu espaço de trabalho do Azure Databricks:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
for c in w.clusters.list():
print(c.cluster_name)
Quando você executa essa célula, uma lista dos nomes de todos os clusters disponíveis em seu espaço de trabalho do Azure Databricks aparece.
Para usar um tipo de autenticação diferente do Azure Databricks, consulte Tipos de autenticação do Azure Databricks suportados e clique no link correspondente para obter detalhes técnicos adicionais.
Usar utilitários Databricks
Você pode chamar a referência de Utilitários de Databricks (dbutils) do SDK do Databricks para código Python em execução em sua máquina de desenvolvimento local ou de dentro de um bloco de anotações do Azure Databricks.
- A partir da sua máquina de desenvolvimento local, o
dbutils.fs
dbutils.secrets
Databricks Utilities tem acesso apenas aos grupos , ,dbutils.widgets
edbutils.jobs
comando. - A partir de um bloco de notas do Azure Databricks anexado a um cluster do Azure Databricks, o Databricks Utilities tem acesso a todos os grupos de comandos disponíveis do Databricks Utilities, não apenas
dbutils.fs
,dbutils.secrets
edbutils.widgets
. Além disso, odbutils.notebook
grupo de comandos é limitado apenas a dois níveis de comandos, por exemplodbutils.notebook.run
oudbutils.notebook.exit
.
Para chamar Utilitários Databricks de sua máquina de desenvolvimento local ou de um bloco de anotações do Azure Databricks, use dbutils
em WorkspaceClient
. Este exemplo de código usa a autenticação padrão do bloco de anotações do Azure Databricks para chamar dbutils
WorkspaceClient
dentro para listar os caminhos de todos os objetos na raiz DBFS do espaço de trabalho.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
d = w.dbutils.fs.ls('/')
for f in d:
print(f.path)
Como alternativa, você pode ligar dbutils
diretamente. No entanto, você está limitado a usar apenas a autenticação padrão do bloco de anotações do Azure Databricks. Este exemplo de código chama dbutils
diretamente para listar todos os objetos na raiz DBFS do espaço de trabalho.
from databricks.sdk.runtime import *
d = dbutils.fs.ls('/')
for f in d:
print(f.path)
Você não pode usar dbutils
sozinho ou dentro WorkspaceClient
para acessar os volumes do Catálogo Unity. Em vez disso, use files
dentro de WorkspaceClient
. Este exemplo de código chama files
dentro WorkspaceClient
para imprimir o conteúdo do arquivo especificado no volume especificado.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
resp = w.files.download('/Volumes/main/default/my-volume/sales.csv')
print(str(resp.contents.read(), encoding='utf-8'))
Consulte também Interação com dbutils.
Exemplos de código
Os exemplos de código a seguir demonstram como usar o SDK do Databricks para Python para criar e excluir clusters, executar trabalhos e listar grupos no nível da conta. Estes exemplos de código usam a autenticação padrão do bloco de anotações do Azure Databricks. Para obter detalhes sobre a autenticação padrão do bloco de anotações do Azure Databricks, consulte Usar o SDK do Databricks para Python de um bloco de anotações do Azure Databricks. Para obter detalhes sobre a autenticação padrão fora dos blocos de anotações, consulte Autenticar o SDK do Databricks para Python com sua conta ou espaço de trabalho do Azure Databricks.
Para obter exemplos de código adicionais, consulte os exemplos no repositório Databricks SDK for Python no GitHub. Consulte também:
Criar um cluster
Este exemplo de código cria um cluster com a versão especificada do Databricks Runtime e o tipo de nó do cluster. Esse cluster tem um trabalhador e o cluster será encerrado automaticamente após 15 minutos de tempo ocioso.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
print("Attempting to create cluster. Please wait...")
c = w.clusters.create_and_wait(
cluster_name = 'my-cluster',
spark_version = '12.2.x-scala2.12',
node_type_id = 'Standard_DS3_v2',
autotermination_minutes = 15,
num_workers = 1
)
print(f"The cluster is now ready at " \
f"{w.config.host}#setting/clusters/{c.cluster_id}/configuration\n")
Excluir permanentemente um cluster
Este exemplo de código exclui permanentemente o cluster com a ID de cluster especificada do espaço de trabalho.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
c_id = input('ID of cluster to delete (for example, 1234-567890-ab123cd4): ')
w.clusters.permanent_delete(cluster_id = c_id)
Criar um trabalho
Este exemplo de código cria um trabalho do Azure Databricks que executa o bloco de anotações especificado no cluster especificado. À medida que o código é executado, ele obtém o caminho do bloco de anotações existente, o ID do cluster existente e as configurações de trabalho relacionadas do usuário no terminal.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.jobs import Task, NotebookTask, Source
w = WorkspaceClient()
job_name = input("Some short name for the job (for example, my-job): ")
description = input("Some short description for the job (for example, My job): ")
existing_cluster_id = input("ID of the existing cluster in the workspace to run the job on (for example, 1234-567890-ab123cd4): ")
notebook_path = input("Workspace path of the notebook to run (for example, /Users/someone@example.com/my-notebook): ")
task_key = input("Some key to apply to the job's tasks (for example, my-key): ")
print("Attempting to create the job. Please wait...\n")
j = w.jobs.create(
name = job_name,
tasks = [
Task(
description = description,
existing_cluster_id = existing_cluster_id,
notebook_task = NotebookTask(
base_parameters = dict(""),
notebook_path = notebook_path,
source = Source("WORKSPACE")
),
task_key = task_key
)
]
)
print(f"View the job at {w.config.host}/#job/{j.job_id}\n")
Criar um trabalho que usa computação sem servidor
Importante
A computação sem servidor para fluxos de trabalho está em Visualização Pública. Para obter informações sobre elegibilidade e habilitação, consulte Habilitar visualização pública de computação sem servidor.
O exemplo a seguir cria um trabalho que usa Serverless Compute for Workflows:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.jobs import NotebookTask, Source, Task
w = WorkspaceClient()
j = w.jobs.create(
name = "My Serverless Job",
tasks = [
Task(
notebook_task = NotebookTask(
notebook_path = "/Users/user@databricks.com/MyNotebook",
source = Source("WORKSPACE")
),
task_key = "MyTask",
)
]
)
Listar grupos no nível da conta
Este exemplo de código lista os nomes para exibição de todos os grupos disponíveis na conta do Azure Databricks.
from databricks.sdk import AccountClient
a = AccountClient()
for g in a.groups.list():
print(g.display_name)
Testar
Para testar seu código, use estruturas de teste Python como pytest. Para testar seu código em condições simuladas sem chamar pontos de extremidade da API REST do Azure Databricks ou alterar o estado de suas contas ou espaços de trabalho do Azure Databricks, use bibliotecas simuladas do Python como unittest.mock.
Por exemplo, dado o seguinte arquivo chamado helpers.py
contendo uma create_cluster
função que retorna informações sobre o novo cluster:
# helpers.py
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.compute import ClusterDetails
def create_cluster(
w: WorkspaceClient,
cluster_name: str,
spark_version: str,
node_type_id: str,
autotermination_minutes: int,
num_workers: int
) -> ClusterDetails:
response = w.clusters.create(
cluster_name = cluster_name,
spark_version = spark_version,
node_type_id = node_type_id,
autotermination_minutes = autotermination_minutes,
num_workers = num_workers
)
return response
E dado o seguinte arquivo chamado main.py
que chama a create_cluster
função:
# main.py
from databricks.sdk import WorkspaceClient
from helpers import *
w = WorkspaceClient()
# Replace <spark-version> with the target Spark version string.
# Replace <node-type-id> with the target node type string.
response = create_cluster(
w = w,
cluster_name = 'Test Cluster',
spark_version = '<spark-version>',
node_type_id = '<node-type-id>',
autotermination_minutes = 15,
num_workers = 1
)
print(response.cluster_id)
O arquivo a seguir chamado test_helpers.py
testa se a create_cluster
função retorna a resposta esperada. Em vez de criar um cluster no espaço de trabalho de destino, esse teste simula um WorkspaceClient
objeto, define as configurações do objeto simulado e, em seguida, passa o objeto simulado para a create_cluster
função. Em seguida, o teste verifica se a função retorna a ID esperada do novo cluster simulado.
# test_helpers.py
from databricks.sdk import WorkspaceClient
from helpers import *
from unittest.mock import create_autospec # Included with the Python standard library.
def test_create_cluster():
# Create a mock WorkspaceClient.
mock_workspace_client = create_autospec(WorkspaceClient)
# Set the mock WorkspaceClient's clusters.create().cluster_id value.
mock_workspace_client.clusters.create.return_value.cluster_id = '123abc'
# Call the actual function but with the mock WorkspaceClient.
# Replace <spark-version> with the target Spark version string.
# Replace <node-type-id> with the target node type string.
response = create_cluster(
w = mock_workspace_client,
cluster_name = 'Test Cluster',
spark_version = '<spark-version>',
node_type_id = '<node-type-id>',
autotermination_minutes = 15,
num_workers = 1
)
# Assert that the function returned the mocked cluster ID.
assert response.cluster_id == '123abc'
Para executar esse teste, execute o pytest
comando a partir da raiz do projeto de código, que deve produzir resultados de teste semelhantes aos seguintes:
$ pytest
=================== test session starts ====================
platform darwin -- Python 3.12.2, pytest-8.1.1, pluggy-1.4.0
rootdir: <project-rootdir>
collected 1 item
test_helpers.py . [100%]
======================== 1 passed ==========================
Recursos adicionais
Para obter mais informações, consulte:
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários