Configurazione di calcolo per Databricks Connect
Nota
Questo articolo illustra Databricks Connect per Databricks Runtime 13.3 LTS e versioni successive.
In questo articolo vengono configurate le proprietà per stabilire una connessione tra Databricks Connect e il cluster Azure Databricks o il calcolo serverless. Queste informazioni si applicano alla versione Python e Scala di Databricks Connect, se non diversamente specificato.
Databricks Connect consente di connettere gli IDE più diffusi, ad esempio Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, server notebook e altre applicazioni personalizzate ai cluster Azure Databricks. Consultare Cos’è Databricks Connect?.
Requisiti
Per configurare una connessione all'ambiente di calcolo di Databricks, è necessario disporre di:
- Databricks Connect installato. Per i requisiti di installazione e i passaggi per versioni specifiche del linguaggio di Databricks Connect, vedere:
- Un account e un'area di lavoro di Azure Databricks in cui è abilitato Unity Catalog. Vedere Configurare e gestire il catalogo unity e Abilitare un'area di lavoro per il catalogo unity.
- Un cluster di Azure Databricks con Databricks Runtime 13.3 LTS o versione successiva.
- La versione di Databricks Runtime del cluster deve essere uguale o successiva alla versione del pacchetto Databricks Connect. Databricks consiglia di usare il pacchetto più recente di Databricks Connect corrispondente alla versione di Databricks Runtime. Per usare le funzionalità disponibili nelle versioni successive di Databricks Runtime, è necessario aggiornare il pacchetto Databricks Connect. Per un elenco delle versioni disponibili di Databricks Connect, vedere le note sulla versione di Databricks Connect disponibili. Per le note sulla versione di Databricks Runtime, vedere Versioni e compatibilità delle note sulla versione di Databricks Runtime.
- Il cluster deve usare una modalità di accesso cluster assegnata o condivisa. Vedere Modalità di accesso usata.
Attrezzaggio
Prima di iniziare, è necessario disporre di quanto segue:
- Se ci si connette a un cluster, l'ID del cluster. È possibile recuperare l'ID cluster dall'URL. Vedere URL e ID del cluster.
- Nome dell'istanza dell'area di lavoro di Azure Databricks. Si tratta del valore Nome host server per il calcolo. Vedere Ottenere i dettagli della connessione per una risorsa di calcolo di Azure Databricks.
- Qualsiasi altra proprietà necessaria per il tipo di autenticazione di Databricks che si vuole usare.
Nota
L'autenticazione da utente a computer (U2M) OAuth è supportata in Databricks SDK per Python 0.19.0 e versioni successive. Aggiornare la versione installata del progetto di codice di Databricks SDK per Python alla versione 0.19.0 o successiva per usare l'autenticazione U2M OAuth. Vedere Introduzione all'SDK di Databricks per Python.
Per l'autenticazione U2M OAuth, è necessario usare l'interfaccia della riga di comando di Databricks per eseguire l'autenticazione prima di eseguire il codice Python. Vedere l'esercitazione.
L'autenticazione OAuth da computer a computer (M2M) OAuth da computer a computer (M2M) è supportata in Databricks SDK per Python 0.18.0 e versioni successive. Aggiornare la versione installata del progetto di codice di Databricks SDK per Python alla versione 0.18.0 o successiva per usare l'autenticazione OAuth M2M. Vedere Introduzione all'SDK di Databricks per Python.
Databricks SDK per Python non ha ancora implementato l'autenticazione delle identità gestite di Azure.
Configurare una connessione a un cluster
Esistono diversi modi per configurare la connessione al cluster. Databricks Connect cerca le proprietà di configurazione nell'ordine seguente e usa la prima configurazione trovata. Per informazioni sulla configurazione avanzata, vedere Utilizzo avanzato di Databricks Connect per Python.
- Metodo remoto della classe DatabricksSession.
- Profilo di configurazione di Databricks
- Variabile di ambiente DATABRICKS_CONFIG_PROFILE
- Variabile di ambiente per ogni proprietà di configurazione
- Profilo di configurazione di Databricks denominato DEFAULT
Metodo DatabricksSession
della remote()
classe
Per questa opzione, che si applica solo all'autenticazione del token di accesso personale di Azure Databricks, specificare il nome dell'istanza dell'area di lavoro, il token di accesso personale di Azure Databricks e l'ID del cluster.
È possibile inizializzare la DatabricksSession
classe in diversi modi:
- Impostare i
host
campi ,token
ecluster_id
inDatabricksSession.builder.remote()
. - Usare la classe di
Config
Databricks SDK. - Specificare un profilo di configurazione di Databricks insieme al
cluster_id
campo .
Anziché specificare queste proprietà di connessione nel codice, Databricks consiglia di configurare le proprietà tramite variabili di ambiente o file di configurazione, come descritto in questa sezione. Gli esempi di codice seguenti presuppongono che vengano fornite alcune implementazioni delle funzioni proposte retrieve_*
per ottenere le proprietà necessarie dall'utente o da un altro archivio di configurazione, ad esempio Azure KeyVault.
Il codice per ognuno di questi approcci è il seguente:
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()
Profilo di configurazione di Databricks
Per questa opzione, creare o identificare un profilo di configurazione di Azure Databricks contenente il campo cluster_id
e tutti gli altri campi necessari per il tipo di autenticazione di Databricks che si vuole usare.
I campi del profilo di configurazione necessari per ogni tipo di autenticazione sono i seguenti:
- Per l'autenticazione del token di accesso personale di Azure Databricks:
host
etoken
. - Per l'autenticazione da computer a computer OAuth (M2M) (dove supportato):
host
,client_id
eclient_secret
. - Per l'autenticazione da utente a computer (U2M) OAuth (dove supportato):
host
. - Per l'autenticazione dell'entità
host
servizio Microsoft Entra ID (in precedenza Azure Active Directory): ,azure_tenant_id
,azure_client_id
,azure_client_secret
e possibilmenteazure_workspace_resource_id
. - Per l'autenticazione dell'interfaccia della riga di comando di Azure:
host
. - Per l'autenticazione delle identità gestite di Azure (dove supportato):
host
,azure_use_msi
,azure_client_id
e possibilmenteazure_workspace_resource_id
.
Impostare quindi il nome di questo profilo di configurazione tramite la classe di configurazione.
È possibile specificare cluster_id
in due modi:
- Includere il
cluster_id
campo nel profilo di configurazione e quindi specificare solo il nome del profilo di configurazione. - Specificare il nome del profilo di configurazione insieme al
cluster_id
campo .
Se la variabile di ambiente è già stata impostata DATABRICKS_CLUSTER_ID
con l'ID del cluster, non è necessario specificare cluster_id
anche .
Il codice per ognuno di questi approcci è il seguente:
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()
Variabile di DATABRICKS_CONFIG_PROFILE
ambiente
Per questa opzione, creare o identificare un profilo di configurazione di Azure Databricks contenente il campo cluster_id
e tutti gli altri campi necessari per il tipo di autenticazione di Databricks che si vuole usare.
Se la variabile di ambiente è già stata impostata DATABRICKS_CLUSTER_ID
con l'ID del cluster, non è necessario specificare cluster_id
anche .
I campi del profilo di configurazione necessari per ogni tipo di autenticazione sono i seguenti:
- Per l'autenticazione del token di accesso personale di Azure Databricks:
host
etoken
. - Per l'autenticazione da computer a computer OAuth (M2M) (dove supportato):
host
,client_id
eclient_secret
. - Per l'autenticazione da utente a computer (U2M) OAuth (dove supportato):
host
. - Per l'autenticazione dell'entità
host
servizio Microsoft Entra ID (in precedenza Azure Active Directory): ,azure_tenant_id
,azure_client_id
,azure_client_secret
e possibilmenteazure_workspace_resource_id
. - Per l'autenticazione dell'interfaccia della riga di comando di Azure:
host
. - Per l'autenticazione delle identità gestite di Azure (dove supportato):
host
,azure_use_msi
,azure_client_id
e possibilmenteazure_workspace_resource_id
.
Impostare la DATABRICKS_CONFIG_PROFILE
variabile di ambiente sul nome di questo profilo di configurazione. Inizializzare quindi la DatabricksSession
classe :
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Variabile di ambiente per ogni proprietà di configurazione
Per questa opzione, impostare la DATABRICKS_CLUSTER_ID
variabile di ambiente e tutte le altre variabili di ambiente necessarie per il tipo di autenticazione databricks che si vuole usare.
Le variabili di ambiente necessarie per ogni tipo di autenticazione sono le seguenti:
- Per l'autenticazione del token di accesso personale di Azure Databricks:
DATABRICKS_HOST
eDATABRICKS_TOKEN
. - Per l'autenticazione da computer a computer OAuth (M2M) (dove supportato):
DATABRICKS_HOST
,DATABRICKS_CLIENT_ID
eDATABRICKS_CLIENT_SECRET
. - Per l'autenticazione da utente a computer (U2M) OAuth (dove supportato):
DATABRICKS_HOST
. - Per l'autenticazione dell'entità
DATABRICKS_HOST
servizio Microsoft Entra ID (in precedenza Azure Active Directory): ,ARM_TENANT_ID
,ARM_CLIENT_ID
,ARM_CLIENT_SECRET
e possibilmenteDATABRICKS_AZURE_RESOURCE_ID
. - Per l'autenticazione dell'interfaccia della riga di comando di Azure:
DATABRICKS_HOST
. - Per l'autenticazione delle identità gestite di Azure (dove supportato):
DATABRICKS_HOST
,ARM_USE_MSI
,ARM_CLIENT_ID
e possibilmenteDATABRICKS_AZURE_RESOURCE_ID
.
Inizializzare quindi la DatabricksSession
classe :
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Profilo di configurazione di Databricks denominato DEFAULT
Per questa opzione, creare o identificare un profilo di configurazione di Azure Databricks contenente il campo cluster_id
e tutti gli altri campi necessari per il tipo di autenticazione di Databricks che si vuole usare.
Se la variabile di ambiente è già stata impostata DATABRICKS_CLUSTER_ID
con l'ID del cluster, non è necessario specificare cluster_id
anche .
I campi del profilo di configurazione necessari per ogni tipo di autenticazione sono i seguenti:
- Per l'autenticazione del token di accesso personale di Azure Databricks:
host
etoken
. - Per l'autenticazione da computer a computer OAuth (M2M) (dove supportato):
host
,client_id
eclient_secret
. - Per l'autenticazione da utente a computer (U2M) OAuth (dove supportato):
host
. - Per l'autenticazione dell'entità
host
servizio Microsoft Entra ID (in precedenza Azure Active Directory): ,azure_tenant_id
,azure_client_id
,azure_client_secret
e possibilmenteazure_workspace_resource_id
. - Per l'autenticazione dell'interfaccia della riga di comando di Azure:
host
. - Per l'autenticazione delle identità gestite di Azure (dove supportato):
host
,azure_use_msi
,azure_client_id
e possibilmenteazure_workspace_resource_id
.
Assegnare al profilo di configurazione il nome DEFAULT
.
Inizializzare quindi la DatabricksSession
classe :
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Configurare una connessione a un ambiente di calcolo serverless
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Databricks Connect per Python supporta la connessione al calcolo serverless. Per usare questa funzionalità, è necessario soddisfare i requisiti per la connessione a serverless. Vedere Requisiti.
Importante
Questa funzionalità presenta le limitazioni seguenti:
- Questa funzionalità è supportata solo in Databricks Connect per Python.
- Tutte le limitazioni di Databricks Connect per Python
- Tutte le limitazioni di calcolo serverless
- Solo le dipendenze Python incluse come parte dell'ambiente di calcolo serverless possono essere usate per le funzioni definite dall'utente. Vedere Immagini client serverless. Non è possibile installare dipendenze aggiuntive.
- Le funzioni definite dall'utente con moduli personalizzati non sono supportate.
È possibile configurare una connessione al calcolo serverless in uno dei modi seguenti:
Impostare la variabile
DATABRICKS_SERVERLESS_COMPUTE_ID
di ambiente locale suauto
. Se questa variabile di ambiente è impostata, Databricks Connect ignora .cluster_id
In un profilo di configurazione di Databricks locale impostare
serverless_compute_id = auto
, quindi fare riferimento a tale profilo dal codice.[DEFAULT] host = https://my-workspace.cloud.databricks.com/ serverless_compute_id = auto token = dapi123...
In alternativa, usare una delle opzioni seguenti:
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
Si verifica il timeout della sessione di calcolo serverless dopo 10 minuti di inattività. Successivamente, è necessario creare una nuova sessione Spark usando getOrCreate()
per connettersi al calcolo serverless.
Convalidare la connessione a Databricks
Per convalidare l'ambiente, le credenziali predefinite e la connessione al calcolo sono configurate correttamente per Databricks Connect, eseguire il databricks-connect test
comando, che ha esito negativo con un codice di uscita diverso da zero e un messaggio di errore corrispondente quando rileva eventuali incompatibilità nella configurazione.
databricks-connect test
In Databricks Connect 14.3 e versioni successive è anche possibile convalidare l'ambiente usando validateSession()
:
DatabricksSession.builder.validateSession(True).getOrCreate()
Disabilitazione di Databricks Connect
I servizi Databricks Connect (e Spark Connect sottostanti) possono essere disabilitati in qualsiasi cluster specifico.
Per disabilitare il servizio Databricks Connect, impostare la configurazione spark seguente nel cluster.
spark.databricks.service.server.enabled false