Udostępnij za pośrednictwem


Konfiguracja obliczeniowa dla usługi Databricks Connect

Uwaga

W tym artykule opisano usługę Databricks Connect dla środowiska Databricks Runtime 13.3 LTS lub nowszego.

W tym artykule skonfigurujesz właściwości w celu nawiązania połączenia między usługą Databricks Connect i klastrem usługi Azure Databricks lub bezserwerowym środowiskiem obliczeniowym. Te informacje dotyczą języków Python i Scala programu Databricks Connect, chyba że określono inaczej.

Usługa Databricks Connect umożliwia łączenie popularnych środowisk IDE, takich jak Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, serwery notesów i inne niestandardowe aplikacje do klastrów usługi Azure Databricks. Zobacz Co to jest usługa Databricks Connect?.

Wymagania

Aby skonfigurować połączenie z obliczeniami usługi Databricks, musisz mieć następujące elementy:

Ustawienia

Przed rozpoczęciem potrzebne są następujące elementy:

Uwaga

Konfigurowanie połączenia z klastrem

Istnieje wiele sposobów konfigurowania połączenia z klastrem. Usługa Databricks Connect wyszukuje właściwości konfiguracji w następującej kolejności i używa pierwszej znalezionej konfiguracji. Aby uzyskać zaawansowane informacje o konfiguracji, zobacz Advanced usage of Databricks Connect for Python (Zaawansowane użycie programu Databricks Connect dla języka Python).

  1. Metoda remote() klasy DatabricksSession.
  2. Profil konfiguracji usługi Databricks
  3. Zmienna środowiskowa DATABRICKS_CONFIG_PROFILE
  4. Zmienna środowiskowa dla każdej właściwości konfiguracji
  5. Profil konfiguracji usługi Databricks o nazwie DEFAULT

DatabricksSession Metoda klasy remote()

W przypadku tej opcji, która ma zastosowanie tylko do uwierzytelniania osobistego tokenu dostępu usługi Azure Databricks, określ nazwę wystąpienia obszaru roboczego, osobisty token dostępu usługi Azure Databricks oraz identyfikator klastra.

Klasę DatabricksSession można zainicjować na kilka sposobów:

  • hostUstaw pola , tokeni cluster_id w pliku DatabricksSession.builder.remote().
  • Użyj klasy zestawu SDK Config usługi Databricks.
  • Określ profil konfiguracji usługi Databricks wraz z polem cluster_id .

Zamiast określać te właściwości połączenia w kodzie, usługa Databricks zaleca konfigurowanie właściwości za pomocą zmiennych środowiskowych lub plików konfiguracji, zgodnie z opisem w tej sekcji. W poniższych przykładach kodu założono, że udostępniasz implementację proponowanych retrieve_* funkcji, aby uzyskać niezbędne właściwości od użytkownika lub z innego magazynu konfiguracji, takiego jak Azure KeyVault.

Kod dla każdego z tych podejść jest następujący:

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()

Profil konfiguracji usługi Databricks

W przypadku tej opcji utwórz lub zidentyfikuj profil konfiguracji usługi Azure Databricks zawierający pole cluster_id i inne pola, które są niezbędne dla typu uwierzytelniania usługi Databricks, którego chcesz użyć.

Wymagane pola profilu konfiguracji dla każdego typu uwierzytelniania są następujące:

Następnie ustaw nazwę tego profilu konfiguracji za pomocą klasy konfiguracji.

Możesz określić cluster_id na kilka sposobów:

  • Uwzględnij cluster_id pole w profilu konfiguracji, a następnie po prostu określ nazwę profilu konfiguracji.
  • Określ nazwę profilu konfiguracji wraz z polem cluster_id .

Jeśli zmienna DATABRICKS_CLUSTER_ID środowiskowa jest już ustawiona przy użyciu identyfikatora klastra, nie trzeba również określać zmiennej cluster_id.

Kod dla każdego z tych podejść jest następujący:

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()

Zmienna DATABRICKS_CONFIG_PROFILE środowiskowa

W przypadku tej opcji utwórz lub zidentyfikuj profil konfiguracji usługi Azure Databricks zawierający pole cluster_id i inne pola, które są niezbędne dla typu uwierzytelniania usługi Databricks, którego chcesz użyć.

Jeśli zmienna DATABRICKS_CLUSTER_ID środowiskowa jest już ustawiona przy użyciu identyfikatora klastra, nie trzeba również określać zmiennej cluster_id.

Wymagane pola profilu konfiguracji dla każdego typu uwierzytelniania są następujące:

Ustaw zmienną DATABRICKS_CONFIG_PROFILE środowiskową na nazwę tego profilu konfiguracji. Następnie zainicjuj klasę DatabricksSession :

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Zmienna środowiskowa dla każdej właściwości konfiguracji

Dla tej opcji ustaw zmienną DATABRICKS_CLUSTER_ID środowiskową i wszelkie inne zmienne środowiskowe, które są niezbędne dla typu uwierzytelniania usługi Databricks, którego chcesz użyć.

Wymagane zmienne środowiskowe dla każdego typu uwierzytelniania są następujące:

  • W przypadku uwierzytelniania osobistego tokenu dostępu usługi Azure Databricks: DATABRICKS_HOST i DATABRICKS_TOKEN.
  • W przypadku uwierzytelniania maszyny-maszyny (M2M) OAuth (gdzie jest obsługiwane): DATABRICKS_HOST, DATABRICKS_CLIENT_IDi DATABRICKS_CLIENT_SECRET.
  • W przypadku uwierzytelniania typu użytkownik-maszyna (U2M) OAuth (gdzie jest obsługiwana): DATABRICKS_HOST.
  • W przypadku DATABRICKS_HOSTjednostki usługi Microsoft Entra ID (dawniej Azure Active Directory): , , ARM_TENANT_ID, ARM_CLIENT_ID, ARM_CLIENT_SECRETi prawdopodobnie DATABRICKS_AZURE_RESOURCE_ID.
  • W przypadku uwierzytelniania interfejsu wiersza polecenia platformy Azure: DATABRICKS_HOST.
  • W przypadku uwierzytelniania tożsamości zarządzanych platformy Azure (gdzie są obsługiwane): DATABRICKS_HOST, ARM_USE_MSI, ARM_CLIENT_IDi ewentualnie DATABRICKS_AZURE_RESOURCE_ID.

Następnie zainicjuj klasę DatabricksSession :

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Profil konfiguracji usługi Databricks o nazwie DEFAULT

W przypadku tej opcji utwórz lub zidentyfikuj profil konfiguracji usługi Azure Databricks zawierający pole cluster_id i inne pola, które są niezbędne dla typu uwierzytelniania usługi Databricks, którego chcesz użyć.

Jeśli zmienna DATABRICKS_CLUSTER_ID środowiskowa jest już ustawiona przy użyciu identyfikatora klastra, nie trzeba również określać zmiennej cluster_id.

Wymagane pola profilu konfiguracji dla każdego typu uwierzytelniania są następujące:

Nadaj nazwę temu profilowi DEFAULTkonfiguracji .

Następnie zainicjuj klasę DatabricksSession :

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Konfigurowanie połączenia z obliczeniami bezserwerowym

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Program Databricks Connect dla języka Python obsługuje nawiązywanie połączenia z bezserwerowymi obliczeniami. Aby korzystać z tej funkcji, należy spełnić wymagania dotyczące nawiązywania połączenia z bezserwerową. Zobacz Wymagania.

Ważne

Ta funkcja ma następujące ograniczenia:

Połączenie z obliczeniami bezserwerowym można skonfigurować na jeden z następujących sposobów:

  • Ustaw lokalną zmienną środowiskową DATABRICKS_SERVERLESS_COMPUTE_ID na auto. Jeśli ta zmienna środowiskowa jest ustawiona, program Databricks Connect ignoruje wartość cluster_id.

  • W lokalnym profilu konfiguracji usługi Databricks ustaw pozycję serverless_compute_id = auto, a następnie odwołaj się do tego profilu z kodu.

    [DEFAULT]
    host = https://my-workspace.cloud.databricks.com/
    serverless_compute_id = auto
    token = dapi123...
    
  • Możesz też użyć jednej z następujących opcji:

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()

Uwaga

Limit czasu sesji obliczeniowej bezserwerowej po upływie 10 minut braku aktywności. Następnie należy utworzyć nową sesję platformy Spark w getOrCreate() celu nawiązania połączenia z bezserwerowym obliczeniami.

Weryfikowanie połączenia z usługą Databricks

Aby zweryfikować środowisko, poświadczenia domyślne i połączenie z obliczeniami są poprawnie skonfigurowane dla usługi Databricks Connect, uruchom databricks-connect test polecenie, które kończy się niepowodzeniem z kodem zakończenia bez zera i odpowiednim komunikatem o błędzie, gdy wykryje niezgodność w instalacji.

databricks-connect test

W programie Databricks Connect 14.3 lub nowszym możesz również zweryfikować środowisko przy użyciu polecenia validateSession():

DatabricksSession.builder.validateSession(True).getOrCreate()

Wyłączanie usługi Databricks Connect

Usługi Databricks Connect (i bazowe platformy Spark Connect) można wyłączyć w dowolnym klastrze.

Aby wyłączyć usługę Databricks Connect, ustaw następującą konfigurację platformy Spark w klastrze.

spark.databricks.service.server.enabled false