Instalar o Databricks Connect para Scala
Observação
Esse artigo aborda o Databricks Connect para Databricks Runtime 13.3 LTS e superior.
Esse artigo descreve como instalar o Databricks Connect para Scala. Confira O que é o Databricks Connect?. Para obter a versão Python deste artigo, consulte Instalar o Databricks Connect para Python.
Requisitos
- O cluster e o workspace do Azure Databricks de destino devem atender aos requisitos de Configuração de cluster para o Databricks Connect.
- O JDK (Java Development Kit) instalado em seu computador de desenvolvimento. O Databricks recomenda que a versão da instalação do JDK que você usa corresponda à versão do JDK em seu cluster do Azure Databricks. Para localizar a versão do JDK em seu cluster, consulte a seção "Ambiente do sistema" das notas sobre a versão do Databricks Runtime para seu cluster. Por exemplo,
Zulu 8.70.0.23-CA-linux64
corresponde ao JDK 8. Veja Versões e compatibilidade das notas de versão do Databricks Runtime. - Scala instalado no seu computador de desenvolvimento. O Databricks recomenda que a versão da sua instalação do Scala que você usa corresponda à versão do Scala em seu cluster do Azure Databricks. Para localizar a versão do Scala em seu cluster, consulte a seção "Ambiente do sistema" das notas sobre a versão do Databricks Runtime para seu cluster. Veja Versões e compatibilidade das notas de versão do Databricks Runtime.
- Uma ferramenta de compilação do Scala em seu computador de desenvolvimento, como
sbt
.
Configurar o cliente
Depois de atender aos requisitos do Databricks Connect, conclua as etapas a seguir para configurar o cliente do Databricks Connect.
Etapa 1: adicionar uma referência ao cliente do Databricks Connect
No arquivo de compilação do projeto Scala, como
build.sbt
parasbt
,pom.xml
para Maven oubuild.gradle
para Gradle, adicione a seguinte referência ao cliente do Databricks Connect:Sbt
libraryDependencies += "com.databricks" % "databricks-connect" % "14.0.0"
Maven
<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-connect</artifactId> <version>14.0.0</version> </dependency>
Gradle
implementation 'com.databricks.databricks-connect:14.0.0'
Substitua
14.0.0
pela versão da biblioteca do Databricks Connect que corresponde à versão do Databricks Runtime em seu cluster. Você pode encontrar os números de versão da biblioteca do Databricks Connect no repositório central do Maven.
Etapa 2: configurar as propriedades da conexão
Nesta seção, você configurará propriedades para estabelecer uma conexão entre o Databricks Connect e o cluster remoto do Azure Databricks. Essas propriedades incluem configurações para autenticar o Databricks Connect com seu cluster.
Para o Databricks Connect para Databricks Runtime 13.3 LTS e superior, para Scala, o Databricks Connect inclui o SDK do Databricks para Java. Este SDK implementa o padrão de autenticação unificada do cliente do Databricks, uma abordagem arquitetônica e programática consolidada e consistente de autenticação. Essa abordagem ajuda a tornar a configuração e a automação da autenticação com o Azure Databricks mais centralizada e previsível. Ela permite que você configure a autenticação do Azure Databricks uma vez e use essa configuração em várias ferramentas e SDKs do Azure Databricks sem mais alterações posteriores na configuração da autenticação.
Observação
A autenticação U2M (usuário para computador) do OAuth tem suporte no SDK do Databricks para Java 0.18.0 e superior. Talvez seja necessário atualizar a versão instalada do seu projeto de código do SDK do Databricks para Java para 0.18.0 ou superior para usar a autenticação U2M do OAuth. Confira Introdução ao SDK do Databricks para Java.
Para autenticação U2M do OAuth, você precisa usar a CLI do Databricks para autenticar antes de executar o código Scala. Confira o Tutorial.
A autenticação M2M (computador para computador) do OAuth tem suporte no SDK do Databricks para Java 0.17.0 e superior. Talvez seja necessário atualizar a versão instalada do seu projeto de código do SDK do Databricks para Java para 0.17.0 ou superior para usar a autenticação U2M do OAuth. Confira Introdução ao SDK do Databricks para Java.
O SDK do Databricks para Java ainda não implementou a autenticação de identidades gerenciadas do Azure.
Colete as propriedades de configuração a seguir.
- O nome da instância do workspace do Azure Databricks. Isso é o mesmo que o valor Nome do host do servidor para o seu cluster; confira Obter detalhes de conexão para um recurso de computação do Azure Databricks.
- A ID do seu cluster. Obtenha a ID do cluster na URL. Confira a URL e ID do cluster.
- Quaisquer outras propriedades necessárias para o tipo de autenticação do Databricks com suporte. Essas propriedades são descritas ao longo desta seção.
Configure a conexão em seu código. O Databricks Connect pesquisa propriedades de configuração na ordem a seguir até encontrá-las. Depois de encontrá-las, ele para de pesquisar as opções restantes. Os detalhes de cada opção aparecem após a tabela a seguir:
Opção de propriedades de configuração Aplicável ao 1. O método remote()
da classeDatabricksSession
Somente autenticação de token de acesso pessoal do Azure Databricks 2. Um perfil de configuração do Azure Databricks Todos os tipos de autenticação do Azure Databricks 3. A variável de ambiente SPARK_REMOTE
Somente autenticação de token de acesso pessoal do Azure Databricks 4. A variável de ambiente DATABRICKS_CONFIG_PROFILE
Todos os tipos de autenticação do Azure Databricks 5. Uma variável de ambiente para cada propriedade de configuração Todos os tipos de autenticação do Azure Databricks 6. Um perfil de configuração do Azure Databricks chamado DEFAULT
Todos os tipos de autenticação do Azure Databricks O método
remote()
da classeDatabricksSession
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 classe
DatabricksSession
de várias maneiras, conforme a seguir:- Defina os campos
host
,token
eclusterId
emDatabricksSession.builder
. - Use a classe
Config
do SDK do Databricks. - Especifique um perfil de configuração do Databricks junto com o campo
clusterId
.
O Databricks não recomenda que você especifique diretamente essas propriedades de conexão em seu código. Em vez disso, o Databricks recomenda configurar 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ê mesmo 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ção, como o Azure KeyVault.O código para cada uma dessas abordagens é o seguinte:
// 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 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 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()
- Defina os campos
Um perfil de configuração do Azure Databricks
Para essa opção, crie ou identifique um perfil de configuração do Azure Databricks que contenha 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:
- Para autenticação de token de acesso pessoal do Azure Databricks:
host
etoken
. - Para aautenticação OAuth de máquina a máquina (M2M) (quando compatível):
host
,client_id
, eclient_secret
. - Para autenticação U2M (usuário para computador) do OAuth (onde compatível):
host
. - No caso da autenticação de entidades de serviço do Microsoft Entra ID (antigo Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
e, possivelmente,azure_workspace_resource_id
. - Para autenticação da CLI do Azure:
host
. - Para Autenticação de identidades gerenciadas do Azure (onde há suporte):
host
,azure_use_msi
,azure_client_id
e possivelmenteazure_workspace_resource_id
.
Em seguida, defina o nome desse perfil de configuração por meio da classe
DatabricksConfig
.Você pode especificar
cluster_id
de algumas maneiras, conforme a seguir:- 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
clusterId
.
Se você já tiver definido a variável de ambiente
DATABRICKS_CLUSTER_ID
com a ID do cluster, não precisará especificar também os camposcluster_id
ouclusterId
.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: 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 clusterId field. // In this example, retrieveClusterId() assumes some custom implementation that // you provide to get the cluster ID from the user or from some other // configuration store: 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()
- Para autenticação de token de acesso pessoal do Azure Databricks:
A
SPARK_REMOTE
variável do ambientePara essa opção, que se aplica somente à autenticação de token de acesso pessoal do Azure Databricks, defina a variável de ambiente
SPARK_REMOTE
como a cadeia de caracteres a seguir, substituindo os espaços reservados pelos valores apropriados.sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
Em seguida, inicialize a classe
DatabricksSession
da seguinte maneira:import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
Para definir variáveis de ambiente, confira a documentação do sistema operacional.
A
DATABRICKS_CONFIG_PROFILE
variável do ambientePara essa opção, crie ou identifique um perfil de configuração do Azure Databricks que contenha 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émcluster_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
etoken
. - Para aautenticação OAuth de máquina a máquina (M2M) (quando compatível):
host
,client_id
, eclient_secret
. - Para autenticação U2M (usuário para computador) do OAuth (onde compatível):
host
. - No caso da autenticação de entidades de serviço do Microsoft Entra ID (antigo Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
e, possivelmente,azure_workspace_resource_id
. - Para autenticação da CLI do Azure:
host
. - Para Autenticação de identidades gerenciadas do Azure (onde há suporte):
host
,azure_use_msi
,azure_client_id
e possivelmenteazure_workspace_resource_id
.
Defina a variável de ambiente
DATABRICKS_CONFIG_PROFILE
para o nome do perfil de configuração personalizado. Em seguida, inicialize a classeDatabricksSession
da seguinte maneira:import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
Para definir variáveis de ambiente, confira a documentação do sistema operacional.
- Para autenticação de token de acesso pessoal do Azure Databricks:
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:
- Para autenticação de token de acesso pessoal do Azure Databricks:
DATABRICKS_HOST
eDATABRICKS_TOKEN
. - Para aautenticação OAuth de máquina a máquina (M2M) (quando compatível):
DATABRICKS_HOST
,DATABRICKS_CLIENT_ID
, eDATABRICKS_CLIENT_SECRET
. - Para autenticação U2M (usuário para computador) do OAuth (onde compatível):
DATABRICKS_HOST
. - No caso da autenticação de entidades de serviço do Microsoft Entra ID (antigo Azure Active Directory):
DATABRICKS_HOST
,ARM_TENANT_ID
,ARM_CLIENT_ID
,ARM_CLIENT_SECRET
e, possivelmente,DATABRICKS_AZURE_RESOURCE_ID
. - Para autenticação da CLI do Azure:
DATABRICKS_HOST
. - Para Autenticação de identidades gerenciadas do Azure (onde há suporte):
DATABRICKS_HOST
,ARM_USE_MSI
,ARM_CLIENT_ID
e possivelmenteDATABRICKS_AZURE_RESOURCE_ID
.
Em seguida, inicialize a classe
DatabricksSession
da seguinte maneira:import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
Para definir variáveis de ambiente, confira a documentação do sistema operacional.
- Para autenticação de token de acesso pessoal do Azure Databricks:
Um perfil de configuração do Azure Databricks chamado
DEFAULT
Para essa opção, crie ou identifique um perfil de configuração do Azure Databricks que contenha 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émcluster_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
etoken
. - Para aautenticação OAuth de máquina a máquina (M2M) (quando compatível):
host
,client_id
, eclient_secret
. - Para autenticação U2M (usuário para computador) do OAuth (onde compatível):
host
. - No caso da autenticação de entidades de serviço do Microsoft Entra ID (antigo Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
e, possivelmente,azure_workspace_resource_id
. - Para autenticação da CLI do Azure:
host
. - Para Autenticação de identidades gerenciadas do Azure (onde há suporte):
host
,azure_use_msi
,azure_client_id
e possivelmenteazure_workspace_resource_id
.
Nomeie esse perfil de configuração
DEFAULT
.Em seguida, inicialize a classe
DatabricksSession
da seguinte maneira:scala import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
- Para autenticação de token de acesso pessoal do Azure Databricks: