Configuração de computação para o Databricks Connect
Observação
Este artigo abrange Databricks Connect para Databricks Runtime 13.3 LTS e acima.
Neste artigo, o senhor configura as propriedades para estabelecer uma conexão entre Databricks Connect e seu Databricks cluster ou serverless compute. Estas informações se aplicam às versões Python e Scala do site 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 Notebook e outros aplicativos personalizados a clusters Databricks. Consulte O que é o Databricks Connect?.
Requisitos
Para configurar uma conexão com Databricks compute, o senhor deve ter:
Databricks Connect instalado. Para obter os requisitos de instalação e os passos para versões de idiomas específicos do Databricks Connect, consulte:
A Databricks account e workspace que têm Unity Catalog ativado. Consulte Configurar e gerenciar Unity Catalog e Habilitar um workspace para Unity Catalog.
A Databricks cluster com Databricks Runtime 13.3 LTS ou acima.
A versão Databricks Runtime do seu cluster deve ser igual ou superior à versão do pacote Databricks Connect. A Databricks recomenda que o senhor use o pacote mais recente do Databricks Connect que corresponda à versão do Databricks Runtime. Para usar os recursos que estão disponíveis em versões posteriores do Databricks Runtime, o senhor deve atualizar o pacote Databricks Connect. Consulte o site Databricks Connect notas sobre a versão para obter uma lista das versões disponíveis em Databricks Connect. Para obter notas sobre a versão Databricks Runtime, consulte Databricks Runtime notas sobre a versão versões e compatibilidade.
Os clusters devem usar um modo de acesso de clusters Atribuído ou Compartilhado. Consulte Modos de acesso.
Configuração
Antes de começar, você precisa do seguinte:
Se o senhor estiver se conectando a um cluster, o ID do cluster. O senhor pode recuperar o ID do cluster a partir do URL. Consulte URL e ID do cluster.
O nome da instância do espaço de trabalho do Databricks. Esse é o valor do nome do host do servidor para o seu compute. Consulte Obter detalhes da conexão para um recurso de computação do Databricks.
Quaisquer outras propriedades que sejam necessárias para o tipo de autenticação do Databricks que o senhor deseja usar.
Observação
Para a autenticaçãoOAuth user-to-machine (U2M), o senhor deve usar o Databricks CLI para se autenticar antes de executar o código. Consulte o tutorial do Databricks Connect para Python ou o tutorial do Databricks Connect para Scala.
Configurar uma conexão com um cluster
Há várias maneiras de configurar a conexão com seu cluster. O Databricks Connect procura as propriedades de configuração na seguinte ordem e usa a primeira configuração que encontrar. Para obter informações sobre configurações avançadas, consulte Uso avançado do Databricks Connect para Python.
O método remote()
da classe DatabricksSession
Para essa opção, que se aplica somente à autenticaçãoDatabricks personal access token , especifique o nome da instância workspace, o Databricks personal access token e o ID do cluster.
Você pode inicializar a classe DatabricksSession
de várias maneiras:
Defina os campos
host
,token
ecluster_id
emDatabricksSession.builder.remote()
.Use a classe
Config
do SDK da Databricks.Especifique um perfil de configuração do Databricks junto com o campo
cluster_id
.
Em vez de especificar essas propriedades de conexão no código, o site Databricks recomenda configurar as propriedades por meio de variáveis de ambiente ou arquivos de configuração, conforme descrito ao longo desta seção. Os exemplos de código a seguir pressupõem que o senhor forneça alguma implementação das funções propostas em retrieve_*
para obter as propriedades necessárias do usuário ou de algum outro armazenamento de configuração, como o AWS Systems Manager Parameter Store.
O código para cada uma dessas abordagens é o seguinte:
# 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()
// 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()
# 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()
// 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()
# 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()
// 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 Databricks que contenha o campo cluster_id
e quaisquer outros campos que sejam necessários para o tipo de autenticação do Databricks que o senhor deseja usar.
Os campos de perfil de configuração necessários para cada tipo de autenticação são os seguintes:
Para Databricks pessoal access token autenticação:
host
etoken
.Para autenticação OAuth máquina a máquina (M2M) (quando compatível):
host
,client_id
, eclient_secret
.Para autenticação OAuth de usuário para máquina (U2M) (quando compatível):
host
.
Observação
A autenticação básica usando um nome de usuário e senha do Databricks chegou ao fim da vida útil em 10 de julho de 2024. Consulte Fim da vida útil das senhas gerenciadas pelo Databricks.
Em seguida, defina o nome desse perfil de configuração por meio da classe de configuração.
Observação
O senhor pode usar a opção --configure-cluster
do comando auth login
para adicionar automaticamente o campo cluster_id
a um perfil de configuração novo ou existente. Para obter mais informações, execute o comando databricks auth login -h
.
Você pode especificar cluster_id
de duas maneiras:
Inclua o campo
cluster_id
em seu perfil de configuração e, em seguida, especifique o nome do perfil de configuração.Especifique o nome do perfil de configuração junto com o campo
cluster_id
.
Se o senhor já tiver definido a variável de ambiente DATABRICKS_CLUSTER_ID
com o ID do cluster, não precisará especificar também cluster_id
.
O código para cada uma dessas abordagens é o seguinte:
# 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()
// 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()
# 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()
// 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 variável de ambiente DATABRICKS_CONFIG_PROFILE
Para essa opção, crie ou identifique um perfil de configuração do Databricks que contenha o campo cluster_id
e quaisquer outros campos que sejam necessários para o tipo de autenticação do Databricks que o senhor deseja usar.
Se o senhor já tiver definido a variável de ambiente DATABRICKS_CLUSTER_ID
com o ID do cluster, não precisará especificar também cluster_id
.
Os campos de perfil de configuração necessários para cada tipo de autenticação são os seguintes:
Para Databricks pessoal access token autenticação:
host
etoken
.Para autenticação OAuth máquina a máquina (M2M) (quando compatível):
host
,client_id
, eclient_secret
.Para autenticação OAuth de usuário para máquina (U2M) (quando compatível):
host
.
Observação
A autenticação básica usando um nome de usuário e senha do Databricks chegou ao fim da vida útil em 10 de julho de 2024. Consulte Fim da vida útil das senhas gerenciadas pelo Databricks.
Observação
O senhor pode usar o --configure-cluster
do comando auth login
para adicionar automaticamente o campo cluster_id
a um perfil de configuração novo ou existente. Para obter mais informações, execute o comando databricks auth login -h
.
Defina a variável de ambiente DATABRICKS_CONFIG_PROFILE
com o nome desse perfil de configuração. Em seguida, inicialize a classe DatabricksSession
:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
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 variável de ambiente DATABRICKS_CLUSTER_ID
e qualquer outra variável de ambiente que seja necessária para o tipo de autenticaçãoDatabricks que o senhor deseja usar.
A variável de ambiente necessária para cada tipo de autenticação é a seguinte:
Para Databricks pessoal access token autenticação:
DATABRICKS_HOST
eDATABRICKS_TOKEN
.Para autenticação OAuth máquina a máquina (M2M):
DATABRICKS_HOST
,DATABRICKS_CLIENT_ID
, eDATABRICKS_CLIENT_SECRET
.Para autenticação OAuth de usuário para máquina (U2M):
DATABRICKS_HOST
.
Observação
A autenticação básica usando um nome de usuário e senha do Databricks chegou ao fim da vida útil em 10 de julho de 2024. Consulte Fim da vida útil das senhas gerenciadas pelo Databricks.
Em seguida, inicialize a classe DatabricksSession
:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
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 Databricks que contenha o campo cluster_id
e quaisquer outros campos que sejam necessários para o tipo de autenticação do Databricks que o senhor deseja usar.
Se o senhor já tiver definido a variável de ambiente DATABRICKS_CLUSTER_ID
com o ID do cluster, não precisará especificar também cluster_id
.
Os campos de perfil de configuração necessários para cada tipo de autenticação são os seguintes:
Para Databricks pessoal access token autenticação:
host
etoken
.Para autenticação OAuth máquina a máquina (M2M) (quando compatível):
host
,client_id
, eclient_secret
.Para autenticação OAuth de usuário para máquina (U2M) (quando compatível):
host
.
Observação
A autenticação básica usando um nome de usuário e senha do Databricks chegou ao fim da vida útil em 10 de julho de 2024. Consulte Fim da vida útil das senhas gerenciadas pelo Databricks.
Nomeie esse perfil de configuração como DEFAULT
.
Observação
O senhor pode usar a opção --configure-cluster
do comando auth login
para adicionar automaticamente o campo cluster_id
ao perfil de configuração DEFAULT
. Para obter mais informações, execute o comando databricks auth login -h
.
Em seguida, inicialize a classe DatabricksSession
:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Configurar uma conexão com a computação sem servidor
Prévia
Esse recurso está em Pré-lançamento público.
Databricks Connect para Python suporta a conexão com serverless compute. Para usar esse recurso, é necessário atender aos requisitos de conexão com o serverless. Consulte os requisitos.
Importante
Esse recurso tem as seguintes limitações:
Esse recurso é compatível apenas com o Databricks Connect for Python.
Somente as dependências Python incluídas como parte do ambiente serverless compute podem ser usadas para UDFs. Consulte Imagens de cliente sem servidor. Dependências adicionais não podem ser instaladas.
Não há suporte para UDFs com módulos personalizados.
O senhor pode configurar uma conexão com serverless compute de uma das seguintes maneiras:
Defina a variável de ambiente local
DATABRICKS_SERVERLESS_COMPUTE_ID
comoauto
. Se essa variável de ambiente for definida, o Databricks Connect ignorará o endereçocluster_id
.Em um perfil de configuração local do Databricks, defina
serverless_compute_id = auto
e, em seguida, faça referência a esse perfil em 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()
Observação
A sessão serverless compute é encerrada após 10 minutos de inatividade. Depois disso, uma nova sessão Spark deve ser criada usando getOrCreate()
para se conectar a serverless compute.
Validar a conexão com o Databricks
Para validar seu ambiente, as credenciais do default e a conexão com o compute estão configuradas corretamente para o Databricks Connect, execute o comando databricks-connect test
, que falha com um código de saída diferente de zero e uma mensagem de erro correspondente quando detecta qualquer incompatibilidade na configuração.
databricks-connect test
Em Databricks Connect 14.3 e acima, o senhor também pode validar seu ambiente usando validateSession()
:
DatabricksSession.builder.validateSession(True).getOrCreate()
Desativando o Databricks Connect
O serviço Databricks Connect (e o Spark Connect subjacente) pode ser desabilitado em qualquer clusters.
Para desativar o serviço Databricks Connect, defina a seguinte configuração do Spark nos clusters.
spark.databricks.service.server.enabled false