configuração de computação para Databricks Connect
Este artigo abrange o 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 clustering serverless computeou. Estas informações se aplicam às versões Python e Scala do site Databricks Connect, salvo indicação em contrário.
Databricks Connect permite que o senhor conecte aplicativos IDEs populares, como Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, servidores Notebook e outros aplicativos personalizados ao clustering 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 e as etapas de instalação 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 versão Databricks Runtime do seu compute 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 obter os requisitos da versão compute, consulte a matriz de suporte de versão para Databricks Connect para Python ou Databricks Connect para Scala.
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.
-
Se o senhor estiver usando o site clássico compute, o clustering deverá usar um modo de acesso de clustering 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 clustering a partir do URL. Consulte URL e ID de clustering.
- O Databricks workspace nome da instância. Esse é o valor do Server Hostname para seu compute. Consulte Obter detalhes da conexão para um recurso Databricks compute.
- Quaisquer outras propriedades que sejam necessárias para o tipo de autenticação do Databricks que o senhor deseja usar.
-
OAuth A autenticação usuário-máquina (U2M) e a OAuth autenticação máquina-máquina (M2M) são suportadas em Databricks SDK para Python 0.19.0 e acima. Atualize a versão instalada do seu projeto de código do Databricks SDK para Python para 0.19.0 ou acima para usar a autenticação OAuth U2M ou M2M. Veja Get começar com o Databricks SDK para Python.
Para a autenticação OAuth U2M, o senhor deve usar o Databricks CLI para se autenticar antes de executar o código Python. Veja o tutorial.
-
A autenticação de credenciais do Google Cloud e a autenticação do Google Cloud ID são compatíveis com Databricks SDK para Python 0.14.0 e acima. Atualize a versão instalada do seu projeto de código do Databricks SDK para Python para 0.14.0 ou acima para usar a autenticação de credenciais do Google Cloud ou a autenticação de ID. Veja Get começar com o Databricks SDK para Python.
Configurar uma conexão com um clustering
Há várias maneiras de configurar a conexão com seu clustering. 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.
- Um perfil de configuração do Databricks
- A variável de ambiente DATABRICKS_CONFIG_PROFILE
- Uma variável de ambiente para cada propriedade de configuração
- Um perfil de configuração Databricks denominado default
O método remote()
da classe DatabricksSession
Para essa opção, que se aplica somente à autenticação de tokens de acesso pessoalDatabricks, especifique o nome da instância workspace, os tokens de acesso pessoal Databricks e o ID do clustering.
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 você forneça alguma implementação das funções retrieve_*
propostas para obter as propriedades necessárias do usuário ou de algum outro armazenamento de configuração, como o Google Cloud Secret Manager.
O código para cada uma dessas abordagens é o seguinte:
- Python
- Scala
# 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()
- Python
- 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 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()
- Python
- Scala
# 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 autenticação de tokens de acesso pessoal em:
host
token
e. - 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
. - Para autenticação de credenciais do Google Cloud (quando compatível):
host
egoogle_credentials
. - Para autenticação do Google Cloud ID (quando compatível):
host
egoogle_service_acccount
.
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 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 o DATABRICKS_CLUSTER_ID
variável de ambiente com o ID do clustering, não precisará especificar também cluster_id
.
O código para cada uma dessas abordagens é o seguinte:
- Python
- Scala
# 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()
- Python
- Scala
# 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 o DATABRICKS_CLUSTER_ID
variável de ambiente com o ID do clustering, 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 autenticação de tokens de acesso pessoal em:
host
token
e. - 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
. - Para autenticação de credenciais do Google Cloud (quando compatível):
host
egoogle_credentials
. - Para autenticação do Google Cloud ID (quando compatível):
host
egoogle_service_acccount
.
Defina a variável de ambiente DATABRICKS_CONFIG_PROFILE
com o nome desse perfil de configuração. Em seguida, inicialize a classe DatabricksSession
:
- Python
- Scala
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 autenticação de tokens de acesso pessoal em:
DATABRICKS_HOST
DATABRICKS_TOKEN
e. - Para autenticação OAuth máquina a máquina (M2M) (quando compatível):
DATABRICKS_HOST
,DATABRICKS_CLIENT_ID
,DATABRICKS_CLIENT_SECRET
. - Para autenticação OAuth de usuário para máquina (U2M) (quando compatível):
DATABRICKS_HOST
. - Para autenticação de credenciais do Google Cloud (quando compatível):
DATABRICKS_HOST
eGOOGLE_CREDENTIALS
. - Para autenticação do Google Cloud ID (quando compatível):
DATABRICKS_HOST
eGOOGLE_SERVICE_ACCOUNT
.
Em seguida, inicialize a classe DatabricksSession
:
- Python
- Scala
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 o DATABRICKS_CLUSTER_ID
variável de ambiente com o ID do clustering, 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 autenticação de tokens de acesso pessoal em:
host
token
e. - 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
. - Para autenticação de credenciais do Google Cloud (quando compatível):
host
egoogle_credentials
. - Para autenticação do Google Cloud ID (quando compatível):
host
egoogle_service_acccount
.
Nomeie esse perfil de configuração como DEFAULT
.
Em seguida, inicialize a classe DatabricksSession
:
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Configurar uma conexão com serverless compute
Visualização
Esse recurso está em Public Preview.
Databricks Connect para Python suporta a conexão com serverless compute. Para usar esse recurso, os requisitos de versão para conexão com o serverless devem ser atendidos. Consulte os requisitos.
Esse recurso tem as seguintes limitações:
- Esse recurso é compatível apenas com o Databricks Connect for Python.
- As versões do Python e do Databricks Connect devem ser compatíveis. Consulte a matriz de suporte de versões.
- Todas as limitações do Databricks Connect for Python
- Todas as limitações doserverless compute
- Somente as dependências Python incluídas como parte do ambiente serverless compute podem ser usadas para UDFs. Consulte as versões do ambiente 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()
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
Databricks Connect (e o serviço subjacente Spark Connect) pode ser desativado em qualquer clustering.
Para desativar o serviço Databricks Connect, defina a seguinte configuraçãoSpark no clustering.
spark.databricks.service.server.enabled false