Condividi tramite


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:

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.

  1. Metodo remoto della classe DatabricksSession.
  2. Profilo di configurazione di Databricks
  3. Variabile di ambiente DATABRICKS_CONFIG_PROFILE
  4. Variabile di ambiente per ogni proprietà di configurazione
  5. 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 hostcampi , tokene cluster_id in DatabricksSession.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:

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_idanche .

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_idanche .

I campi del profilo di configurazione necessari per ogni tipo di autenticazione sono i seguenti:

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:

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_idanche .

I campi del profilo di configurazione necessari per ogni tipo di autenticazione sono i seguenti:

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 su auto. 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