Compartilhar via


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

Observação

Esse artigo aborda o Databricks Connect para Databricks Runtime 13.3 LTS e superior.

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

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

Requisitos

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

Instalação

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

Observação

Configurar uma conexão com um cluster

Há várias maneiras de configurar a conexão com o cluster. O Databricks Connect pesquisa propriedades de configuração na ordem a seguir e usa a primeira configuração encontrada. Para obter informações de configuração avançada, consulte Uso avançado do Databricks Connect para 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 método remote() da classe DatabricksSession

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

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

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

Em vez de especificar essas propriedades de conexão em seu código, o 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 repositório de configurações, 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 que contém o campo cluster_id e quaisquer outros campos necessários para o tipo de autenticação do Databricks que você deseja usar.

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

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 apenas o nome do perfil de configuração.
  • Especifique o nome do perfil de configuração junto com o campo cluster_id.

Se você já tiver definido a variável de ambiente DATABRICKS_CLUSTER_ID com a ID do cluster, não precisará especificar também 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 variável de ambiente DATABRICKS_CONFIG_PROFILE

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

Se você já tiver definido a variável de ambiente DATABRICKS_CLUSTER_ID com a 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:

Defina a variável de ambiente DATABRICKS_CONFIG_PROFILE para o nome do perfil de configuração personalizado. 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 variável de ambiente DATABRICKS_CLUSTER_ID e quaisquer outras variáveis de ambiente necessárias para o tipo de autenticação do Databricks que você deseja usar.

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

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 que contém o campo cluster_id e quaisquer outros campos necessários para o tipo de autenticação do Databricks que você deseja usar.

Se você já tiver definido a variável de ambiente DATABRICKS_CLUSTER_ID com a 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:

Nomeie esse perfil de configuração DEFAULT.

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 a computação sem servidor

Importante

Esse recurso está em uma versão prévia.

O Databricks Connect para Python dá suporte à conexão com a computação sem servidor. Para usar esse recurso, os requisitos para se conectar à computação sem servidor devem ser atendidos. Confira os Requisitos

Importante

Este recurso tem as seguintes limitações:

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

  • Defina a variável de ambiente local DATABRICKS_SERVERLESS_COMPUTE_ID como auto. Se a 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 faça referência a esse perfil 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()

Observação

A sessão de computação sem servidor atinge o tempo limite 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 se o seu ambiente, as credenciais padrão e a conexão com a computação estão configurados 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 incompatibilidade na instalaçã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()

Desabilitar o Databricks Connect

Os serviços do Databricks Connect (e do Spark Connect subjacente) podem ser desabilitados em qualquer cluster específico.

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

spark.databricks.service.server.enabled false