Partilhar via


Configuração de computação para Databricks Connect

Nota

Este artigo aborda o Databricks Connect for Databricks Runtime 13.3 LTS e superior.

Neste artigo, você configura propriedades para estabelecer uma conexão entre o Databricks Connect e seu cluster do Azure Databricks ou computação sem servidor. Essas informações se aplicam à versão Python e Scala do Databricks Connect, salvo indicação em contrário.

O Databricks Connect permite conectar IDEs populares, como Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, servidores de notebook e outros aplicativos personalizados a clusters do Azure Databricks. Consulte O que é Databricks Connect?.

Requisitos

Para configurar uma conexão com a computação do Databricks, você deve ter:

  • Databricks Connect instalado. Para obter os requisitos de instalação e as etapas para versões de idiomas específicos do Databricks Connect, consulte:
  • Uma conta e um espaço de trabalho do Azure Databricks com o Unity Catalog habilitado. Consulte Configurar e gerenciar o Catálogo Unity e Habilitar um espaço de trabalho para o Catálogo Unity.
  • Um cluster do Azure Databricks com Databricks Runtime 13.3 LTS ou superior.
  • A versão do Databricks Runtime do cluster deve ser igual ou superior à versão do pacote Databricks Connect. O Databricks recomenda que você use o pacote mais recente do Databricks Connect que corresponda à versão do Databricks Runtime. Para usar recursos que estão disponíveis em versões posteriores do Databricks Runtime, você deve atualizar o pacote Databricks Connect. Consulte as notas de versão do Databricks Connect para obter uma lista das versões disponíveis do Databricks Connect. Para obter as notas de versão da versão do Databricks Runtime, consulte Versões e compatibilidade das notas de versão do Databricks Runtime.
  • O cluster deve usar um modo de acesso ao cluster de Atribuído ou Compartilhado. Consulte Modos de acesso.

Configurar

Antes de começar, você precisa do seguinte:

Nota

  • A autenticação OAuth user-to-machine (U2M) é suportada no Databricks SDK para Python 0.19.0 e superior. Atualize a versão instalada do seu projeto de código do Databricks SDK for Python para 0.19.0 ou superior para usar a autenticação OAuth U2M. Consulte Introdução ao SDK do Databricks para Python.

    Para autenticação OAuth U2M, você deve usar a CLI do Databricks para autenticar antes de executar o código Python. Consulte o Tutorial.

  • Autenticação OAuth máquina-a-máquina (M2M) A autenticação OAuth máquina-a-máquina (M2M) é suportada no Databricks SDK para Python 0.18.0 e superior. Atualize a versão instalada do seu projeto de código do Databricks SDK for Python para 0.18.0 ou superior para usar a autenticação OAuth M2M. Consulte Introdução ao SDK do Databricks para Python.

  • O SDK do Databricks para Python ainda não implementou a autenticação de identidades gerenciadas do Azure.

Configurar uma conexão com um cluster

Há várias maneiras de configurar a conexão com o cluster. O Databricks Connect procura propriedades de configuração na seguinte ordem e usa a primeira configuração encontrada. Para obter informações de configuração avançada, consulte Uso avançado do Databricks Connect for Python.

  1. O método remote() da classe DatabricksSession.
  2. Um perfil de configuração do Databricks
  3. A variável de ambiente DATABRICKS_CONFIG_PROFILE
  4. Uma variável de ambiente para cada propriedade de configuração
  5. Um perfil de configuração do Databricks chamado DEFAULT

O DatabricksSession método da remote() classe

Para esta opção, que se aplica apenas à autenticação do token de acesso pessoal do Azure Databricks, especifique o nome da instância do espaço de trabalho, o token de acesso pessoal do Azure Databricks e a ID do cluster.

Você pode inicializar a classe de DatabricksSession várias maneiras:

  • Defina os hostcampos token, cluster_ide em DatabricksSession.builder.remote() .
  • Use a classe do SDK do Databricks Config .
  • Especifique um perfil de configuração do Databricks junto com o cluster_id campo.

Em vez de especificar essas propriedades de conexão em seu código, o Databricks recomenda configurar propriedades por meio de variáveis de ambiente ou arquivos de configuração, conforme descrito nesta seção. Os exemplos de código a seguir pressupõem que você forneça alguma implementação das funções propostas retrieve_* para obter as propriedades necessárias do usuário ou de algum outro repositório de configuração, como o Azure KeyVault.

O código para cada uma dessas abordagens é o seguinte:

Python

# Set the host, token, and cluster_id fields in DatabricksSession.builder.remote.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.remote(
host       = f"https://{retrieve_workspace_instance_name()}",
token      = retrieve_token(),
cluster_id = retrieve_cluster_id()
).getOrCreate()

Scala

// Set the host, token, and clusterId fields in DatabricksSession.builder.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder()
    .host(retrieveWorkspaceInstanceName())
    .token(retrieveToken())
    .clusterId(retrieveClusterId())
    .getOrCreate()

Python

# Use the Databricks SDK's Config class.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
host       = f"https://{retrieve_workspace_instance_name()}",
token      = retrieve_token(),
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Use the Databricks SDK's Config class.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setHost(retrieveWorkspaceInstanceName())
    .setToken(retrieveToken())
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

Python

# Specify a Databricks configuration profile along with the `cluster_id` field.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
profile    = "<profile-name>",
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Specify a Databricks configuration profile along with the clusterId field.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

Um perfil de configuração do Databricks

Para essa opção, crie ou identifique um perfil de configuração do Azure Databricks contendo o campo cluster_id e quaisquer outros campos necessários para o tipo de autenticação Databricks que você deseja usar.

Os campos de perfil de configuração necessários para cada tipo de autenticação são os seguintes:

  • Para autenticação de token de acesso pessoal do Azure Databricks: host e token.
  • Para autenticação OAuth máquina-a-máquina (M2M) (quando suportado): host, client_ide client_secret.
  • Para autenticação OAuth user-to-machine (U2M) (quando suportado): host.
  • Para a autenticação da entidade de serviço do Microsoft Entra ID (anteriormente Azure Ative Directory): host, azure_tenant_id, azure_client_id, azure_client_secrete possivelmente azure_workspace_resource_id.
  • Para autenticação da CLI do Azure: host.
  • Para autenticação de identidades gerenciadas do Azure (quando suportado): host, azure_use_msi, azure_client_ide possivelmente azure_workspace_resource_id.

Em seguida, defina o nome desse perfil de configuração por meio da classe de configuração.

Você pode especificar cluster_id de duas maneiras:

  • Inclua o cluster_id campo no seu perfil de configuração e, em seguida, especifique apenas o nome do perfil de configuração.
  • Especifique o nome do perfil de configuração juntamente com o cluster_id campo.

Se você já tiver definido a DATABRICKS_CLUSTER_ID variável de ambiente com a ID do cluster, também não precisará especificar cluster_id.

O código para cada uma dessas abordagens é o seguinte:

Python

# Include the cluster_id field in your configuration profile, and then
# just specify the configuration profile's name:
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.profile("<profile-name>").getOrCreate()

Scala

// Include the cluster_id field in your configuration profile, and then
// just specify the configuration profile's name:
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
    val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .getOrCreate()

Python

# Specify the configuration profile name along with the cluster_id field.
# In this example, retrieve_cluster_id() assumes some custom implementation that
# you provide to get the cluster ID from the user or from some other
# configuration store:
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
profile    = "<profile-name>",
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Specify a Databricks configuration profile along with the clusterId field.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

A DATABRICKS_CONFIG_PROFILE variável de ambiente

Para essa opção, crie ou identifique um perfil de configuração do Azure Databricks contendo o campo cluster_id e quaisquer outros campos necessários para o tipo de autenticação Databricks que você deseja usar.

Se você já tiver definido a DATABRICKS_CLUSTER_ID variável de ambiente com a ID do cluster, também não precisará especificar cluster_id.

Os campos de perfil de configuração necessários para cada tipo de autenticação são os seguintes:

  • Para autenticação de token de acesso pessoal do Azure Databricks: host e token.
  • Para autenticação OAuth máquina-a-máquina (M2M) (quando suportado): host, client_ide client_secret.
  • Para autenticação OAuth user-to-machine (U2M) (quando suportado): host.
  • Para a autenticação da entidade de serviço do Microsoft Entra ID (anteriormente Azure Ative Directory): host, azure_tenant_id, azure_client_id, azure_client_secrete possivelmente azure_workspace_resource_id.
  • Para autenticação da CLI do Azure: host.
  • Para autenticação de identidades gerenciadas do Azure (quando suportado): host, azure_use_msi, azure_client_ide possivelmente azure_workspace_resource_id.

Defina a DATABRICKS_CONFIG_PROFILE variável de ambiente como o nome desse perfil de configuração. Em seguida, inicialize a DatabricksSession classe:

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Uma variável de ambiente para cada propriedade de configuração

Para essa opção, defina a DATABRICKS_CLUSTER_ID variável de ambiente e quaisquer outras variáveis de ambiente necessárias para o tipo de autenticação Databricks que você deseja usar.

As variáveis de ambiente necessárias para cada tipo de autenticação são as seguintes:

  • Para autenticação de token de acesso pessoal do Azure Databricks: DATABRICKS_HOST e DATABRICKS_TOKEN.
  • Para autenticação OAuth máquina-a-máquina (M2M) (quando suportado): DATABRICKS_HOST, DATABRICKS_CLIENT_IDe DATABRICKS_CLIENT_SECRET.
  • Para autenticação OAuth user-to-machine (U2M) (quando suportado): DATABRICKS_HOST.
  • Para a autenticação da entidade de serviço do Microsoft Entra ID (anteriormente Azure Ative Directory): DATABRICKS_HOST, ARM_TENANT_ID, ARM_CLIENT_ID, ARM_CLIENT_SECRETe possivelmente DATABRICKS_AZURE_RESOURCE_ID.
  • Para autenticação da CLI do Azure: DATABRICKS_HOST.
  • Para autenticação de identidades gerenciadas do Azure (quando suportado): DATABRICKS_HOST, ARM_USE_MSI, ARM_CLIENT_IDe possivelmente DATABRICKS_AZURE_RESOURCE_ID.

Em seguida, inicialize a DatabricksSession classe:

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Um perfil de configuração do Databricks chamado DEFAULT

Para essa opção, crie ou identifique um perfil de configuração do Azure Databricks contendo o campo cluster_id e quaisquer outros campos necessários para o tipo de autenticação Databricks que você deseja usar.

Se você já tiver definido a DATABRICKS_CLUSTER_ID variável de ambiente com a ID do cluster, também não precisará especificar cluster_id.

Os campos de perfil de configuração necessários para cada tipo de autenticação são os seguintes:

  • Para autenticação de token de acesso pessoal do Azure Databricks: host e token.
  • Para autenticação OAuth máquina-a-máquina (M2M) (quando suportado): host, client_ide client_secret.
  • Para autenticação OAuth user-to-machine (U2M) (quando suportado): host.
  • Para a autenticação da entidade de serviço do Microsoft Entra ID (anteriormente Azure Ative Directory): host, azure_tenant_id, azure_client_id, azure_client_secrete possivelmente azure_workspace_resource_id.
  • Para autenticação da CLI do Azure: host.
  • Para autenticação de identidades gerenciadas do Azure (quando suportado): host, azure_use_msi, azure_client_ide possivelmente azure_workspace_resource_id.

Nomeie este perfil DEFAULTde configuração .

Em seguida, inicialize a DatabricksSession classe:

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Configurar uma conexão com computação sem servidor

Importante

Esta funcionalidade está em Pré-visualização Pública.

O Databricks Connect for Python suporta a conexão com computação sem servidor. Para usar esse recurso, os requisitos para se conectar ao serverless devem ser atendidos. Consulte Requisitos.

Importante

Este recurso tem as seguintes limitações:

Você pode configurar uma conexão com computação sem servidor de uma das seguintes maneiras:

  • Defina a variável DATABRICKS_SERVERLESS_COMPUTE_ID de ambiente local como auto. Se essa variável de ambiente estiver definida, o Databricks Connect ignorará o cluster_id.

  • Em um perfil de configuração local do Databricks, defina serverless_compute_id = autoe, em seguida, faça referência a esse perfil a partir do seu código.

    [DEFAULT]
    host = https://my-workspace.cloud.databricks.com/
    serverless_compute_id = auto
    token = dapi123...
    
  • Ou use uma das seguintes opções:

from databricks.connect import DatabricksSession as SparkSession

spark = DatabricksSession.builder.serverless(True).getOrCreate()
from databricks.connect import DatabricksSession as SparkSession

spark = DatabricksSession.builder.remote(serverless=True).getOrCreate()

Nota

A sessão de computação sem servidor expira após 10 minutos de inatividade. Depois disso, uma nova sessão do Spark deve ser criada usando getOrCreate() para se conectar à computação sem servidor.

Validar a conexão com o Databricks

Para validar seu ambiente, as credenciais padrão e a conexão com a computação estão configuradas corretamente para o Databricks Connect, execute o databricks-connect test comando, que falha com um código de saída diferente de zero e uma mensagem de erro correspondente quando deteta qualquer incompatibilidade na configuração.

databricks-connect test

No Databricks Connect 14.3 e superior, você também pode validar seu ambiente usando validateSession():

DatabricksSession.builder.validateSession(True).getOrCreate()

Desativando o Databricks Connect

Os serviços Databricks Connect (e o Spark Connect subjacente) podem ser desativados em qualquer cluster.

Para desativar o serviço Databricks Connect, defina a seguinte configuração do Spark no cluster.

spark.databricks.service.server.enabled false