Computekonfiguration für Databricks Connect
Hinweis
Dieser Artikel behandelt Databricks Connect für Databricks Runtime Version 13.3 LTS und höher.
In diesem Artikel konfigurieren Sie Eigenschaften, um eine Verbindung zwischen Databricks Connect und Ihrem Azure Databricks-Cluster oder serverlosen Compute herzustellen. Diese Informationen gelten für die Python- und Scala-Version von Databricks Connect, sofern nicht anders angegeben.
Mit Databricks Connect können Sie beliebte IDEs wie Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, Notebookserver und andere benutzerdefinierte Anwendungen mit Azure Databricks-Clustern verbinden. Weitere Informationen finden Sie unter Was ist Databricks Connect?.
Anforderungen
Um eine Verbindung mit Databricks zu konfigurieren, müssen Sie folgendes haben:
- Databricks Connect installiert. Installationsanforderungen und Schritte für bestimmte Sprachversionen von Databricks Connect finden Sie unter:
- Ein Azure Databricks-Konto und -Arbeitsbereich mit aktiviertem Unity Catalog. Weitere Informationen finden Sie unter Einrichten und Verwalten von Unity Catalog und Aktivieren eines Arbeitsbereichs für Unity Catalog.
- Ein Azure Databricks-Cluster mit Databricks Runtime 13.3 LTS oder höher.
- Die Databricks-Runtime-Version Ihres Clusters muss der Databricks Connect-Paketversion entsprechen. Databricks empfiehlt, dass Sie das neueste Paket von Databricks Connect verwenden, die mit der Databricks Runtime-Version übereinstimmt. Um Features zu verwenden, die in späteren Versionen der Databricks-Runtime verfügbar sind, müssen Sie das Databricks Connect-Paket aktualisieren. Eine Liste mit verfügbaren Databricks Connect-Releases finden Sie in den Versionshinweisen zu Databricks Connect. Versionshinweise zu bestimmten Databricks Runtime-Versionen finden Sie unter Versionshinweise zu Databricks Runtime-Versionen und -Kompatibilität.
- Der Cluster muss einen Clusterzugriffsmodus vom Typ Zugewiesen oder Freigegeben nutzen. Weitere Informationen finden Sie unter Zugriffsmodi.
Setup
Bevor Sie beginnen, benötigen Sie Folgendes:
- Wenn Sie eine Verbindung mit einem Cluster herstellen, wird die ID Ihres Clusters angegeben. Sie können die Cluster-ID aus der URL abrufen. Weitere Informationen finden Sie unter Cluster-URL und -ID.
- Den Instanzennamen des Arbeitsbereichs von Azure Databricks. Dies ist der Wert für Serverhostname für Ihr Compute. Weitere Informationen finden Sie unter Abrufen von Verbindungsdetails für eine Azure Databricks-Computeressource.
- Alle anderen Eigenschaften, die für den Databricks-Authentifizierungstyp erforderlich sind, den Sie verwenden möchten.
Hinweis
Die OAuth-User-to-Machine-Authentifizierung (U2M) wird unter Databricks SDK für Python 0.19.0 und höher unterstützt. Aktualisieren Sie die installierte Version ihres Codeprojekts des Databricks SDK für Python auf 0.19.0 oder höher, um die OAuth U2M-Authentifizierung zu verwenden. Weitere Informationen unter Erste Schritte mit dem Databricks SDK für Python.
Für die OAuth U2M-Authentifizierung müssen Sie die Databricks CLI verwenden, um sich zu authentifizieren, bevor Sie Ihren Python-Code ausführen. Weitere Informationen finden Sie im Tutorial.
OAuth Machine-to-Machine (M2M)-Authentifizierung OAuth Machine-to-Machine (M2M)-Authentifizierung wird unter Databricks SDK für Python 0.18.0 und höher unterstützt. Aktualisieren Sie die installierte Version Ihres Codeprojekts des Databricks SDK für Python auf 0.18.0 oder höher, um die OAuth M2M-Authentifizierung zu verwenden. Weitere Informationen unter Erste Schritte mit dem Databricks SDK für Python.
Das Databricks SDK für Python hat noch keine Authentifizierung mit von Azure verwalteten Identitäten implementiert.
Konfigurieren einer Verbindung mit einem Cluster
Es gibt mehrere Möglichkeiten zum Konfigurieren der Verbindung mit Ihrem Cluster. Databricks Connect sucht in der folgenden Reihenfolge nach Konfigurationseigenschaften und verwendet die erste gefundene Konfiguration. Erweiterte Konfigurationsinformationen finden Sie unter Erweiterte Verwendung von Databricks Connect for Python.
- Die Remote()-Methode der DatabricksSession-Klasse.
- Ein Databricks-Konfigurationsprofil
- Die Umgebungsvariable DATABRICKS_CONFIG_PROFILE
- Eine Umgebungsvariable für jede Verbindungseigenschaft
- Ein Azure Databricks-Konfigurationsprofil mit dem Namen DEFAULT
Die remote()
-Methode der DatabricksSession
-Klasse
Geben Sie für diese Option, die nur für die Authentifizierung mit persönlichem Zugriffstoken in Azure Databricks gilt, den Instanzname des Arbeitsbereichs, das persönliche Zugriffstoken in Azure Databricks und die ID des Clusters an.
Sie können die DatabricksSession
Klasse auf verschiedene Arten initialisieren:
- Legen Sie die Felder
host
,token
undcluster_id
inDatabricksSession.builder.remote()
fest. - Verwenden Sie die
Config
-Klasse des Databricks SDK. - Geben Sie ein Databricks-Konfigurationsprofil zusammen mit dem
cluster_id
-Feld an.
Anstatt diese Verbindungseigenschaften in Ihrem Code anzugeben, empfiehlt Databricks, Eigenschaften über Umgebungsvariablen oder Konfigurationsdateien zu konfigurieren, wie in diesem Abschnitt beschrieben. In den folgenden Codebeispielen wird davon ausgegangen, dass Sie eine Implementierung der vorgeschlagenen retrieve_*
-Funktionen bereitstellen, um die erforderlichen Eigenschaften vom Benutzer oder aus einem anderen Konfigurationsspeicher abzurufen, z. B. dem Azure KeyVault.
Der Code für jeden dieser Ansätze lautet wie folgt:
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()
Ein Azure Databricks-Konfigurationsprofil
Erstellen oder identifizieren Sie für diese Option ein Azure Databricks-Konfigurationsprofil mit dem Feld cluster_id
und allen anderen Felder, die für den Databricks-Authentifizierungstyp erforderlich sind, den Sie verwenden möchten.
Die folgenden Konfigurationsprofilfelder sind für die einzelnen Authentifizierungstypen erforderlich:
- Für die Authentifizieren mit persönlichen Azure Databricks-Zugriffstoken:
host
undtoken
- Für OAuth-M2M-Authentifizierung (sofern unterstützt):
host
,client_id
undclient_secret
. - Für die OAuth-User-to-Machine-Authentifizierung (U2M) (wo unterstützt):
host
. - Für die Dienstprinzipalauthentifizierung in Microsoft Entra ID (früher Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
und möglicherweiseazure_workspace_resource_id
. - Für die Azure CLI-Authentifizierung:
host
- Für die Authentifizierung mit von Azure verwalteten Identitäten (sofern unterstützt):
host
,azure_use_msi
,azure_client_id
und eventuellazure_workspace_resource_id
.
Legen Sie dann den Namen dieses Konfigurationsprofils über die Konfigurationsklasse fest.
Sie können auf verschiedene Arten angeben cluster_id
:
- Fügen Sie das
cluster_id
-Feld in Ihr Konfigurationsprofil ein, und geben Sie dann einfach den Namen des Konfigurationsprofils an. - Geben Sie den Konfigurationsprofilnamen zusammen mit dem
cluster_id
-Feld an.
Wenn Sie die DATABRICKS_CLUSTER_ID
-Umgebungsvariable bereits mit der Cluster-ID festgelegt haben, müssen Sie cluster_id
nicht ebenfalls angeben.
Der Code für jeden dieser Ansätze lautet wie folgt:
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()
Die DATABRICKS_CONFIG_PROFILE
-Umgebungsvariable
Erstellen oder identifizieren Sie für diese Option ein Azure Databricks-Konfigurationsprofil mit dem Feld cluster_id
und allen anderen Felder, die für den Databricks-Authentifizierungstyp erforderlich sind, den Sie verwenden möchten.
Wenn Sie die DATABRICKS_CLUSTER_ID
-Umgebungsvariable bereits mit der Cluster-ID festgelegt haben, müssen Sie cluster_id
nicht ebenfalls angeben.
Die folgenden Konfigurationsprofilfelder sind für die einzelnen Authentifizierungstypen erforderlich:
- Für die Authentifizieren mit persönlichen Azure Databricks-Zugriffstoken:
host
undtoken
- Für OAuth-M2M-Authentifizierung (sofern unterstützt):
host
,client_id
undclient_secret
. - Für die OAuth-User-to-Machine-Authentifizierung (U2M) (wo unterstützt):
host
. - Für die Dienstprinzipalauthentifizierung in Microsoft Entra ID (früher Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
und möglicherweiseazure_workspace_resource_id
. - Für die Azure CLI-Authentifizierung:
host
- Für die Authentifizierung mit von Azure verwalteten Identitäten (sofern unterstützt):
host
,azure_use_msi
,azure_client_id
und eventuellazure_workspace_resource_id
.
Legen Sie die DATABRICKS_CONFIG_PROFILE
-Umgebungsvariable auf den Namen dieses Konfigurationsprofils fest. Initialisieren Sie dann die DatabricksSession
Klasse:
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Eine Umgebungsvariable für jede Verbindungseigenschaft
Legen Sie für diese Option die DATABRICKS_CLUSTER_ID
-Umgebungsvariable und alle anderen Umgebungsvariablen fest, die für den Databricks-Authentifizierungstyp erforderlich sind, den Sie verwenden möchten.
Die folgenden Umgebungsvariablen sind für die einzelnen Authentifizierungstypen erforderlich:
- Für die Authentifizieren mit persönlichen Azure Databricks-Zugriffstoken:
DATABRICKS_HOST
undDATABRICKS_TOKEN
- Für OAuth-M2M-Authentifizierung (sofern unterstützt):
DATABRICKS_HOST
,DATABRICKS_CLIENT_ID
undDATABRICKS_CLIENT_SECRET
. - Für die OAuth-User-to-Machine-Authentifizierung (U2M) (wo unterstützt):
DATABRICKS_HOST
. - Für die Dienstprinzipalauthentifizierung in Microsoft Entra ID (früher Azure Active Directory):
DATABRICKS_HOST
,ARM_TENANT_ID
,ARM_CLIENT_ID
,ARM_CLIENT_SECRET
und möglicherweiseDATABRICKS_AZURE_RESOURCE_ID
. - Für die Azure CLI-Authentifizierung:
DATABRICKS_HOST
- Für die Authentifizierung mit von Azure verwalteten Identitäten (sofern unterstützt):
DATABRICKS_HOST
,ARM_USE_MSI
,ARM_CLIENT_ID
und eventuellDATABRICKS_AZURE_RESOURCE_ID
.
Initialisieren Sie dann die DatabricksSession
Klasse:
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Ein Azure Databricks-Konfigurationsprofil mit dem Namen DEFAULT
Erstellen oder identifizieren Sie für diese Option ein Azure Databricks-Konfigurationsprofil mit dem Feld cluster_id
und allen anderen Felder, die für den Databricks-Authentifizierungstyp erforderlich sind, den Sie verwenden möchten.
Wenn Sie die DATABRICKS_CLUSTER_ID
-Umgebungsvariable bereits mit der Cluster-ID festgelegt haben, müssen Sie cluster_id
nicht ebenfalls angeben.
Die folgenden Konfigurationsprofilfelder sind für die einzelnen Authentifizierungstypen erforderlich:
- Für die Authentifizieren mit persönlichen Azure Databricks-Zugriffstoken:
host
undtoken
- Für OAuth-M2M-Authentifizierung (sofern unterstützt):
host
,client_id
undclient_secret
. - Für die OAuth-User-to-Machine-Authentifizierung (U2M) (wo unterstützt):
host
. - Für die Dienstprinzipalauthentifizierung in Microsoft Entra ID (früher Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
und möglicherweiseazure_workspace_resource_id
. - Für die Azure CLI-Authentifizierung:
host
- Für die Authentifizierung mit von Azure verwalteten Identitäten (sofern unterstützt):
host
,azure_use_msi
,azure_client_id
und eventuellazure_workspace_resource_id
.
Benennen Sie dieses Konfigurationsprofil DEFAULT
.
Initialisieren Sie dann die DatabricksSession
Klasse:
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Konfigurieren einer Verbindung mit serverlosem Compute
Wichtig
Dieses Feature befindet sich in der Public Preview.
Databricks Connect für Python unterstützt die Verbindung mit serverlosem Compute. Um dieses Feature zu verwenden, müssen die Anforderungen für die Verbindung mit serverlosen Servern erfüllt sein. Siehe Anforderungen.
Wichtig
Für diese Funktion gelten folgende Einschränkungen:
- Dieses Feature wird nur in Databricks Connect für Python unterstützt.
- Alle Databricks Connect für Python-Einschränkungen
- Alle serverlosen Computebeschränkungen
- Nur Python-Abhängigkeiten, die als Teil der serverlosen Computeumgebung enthalten sind, können als UDFs verwendet werden. Siehe Serverlose Clientimages. Zusätzliche Abhängigkeiten können nicht installiert werden.
- UDFs mit benutzerdefinierten Modulen werden nicht unterstützt.
Sie können eine Verbindung mit serverlosem Compute auf eine der folgenden Arten konfigurieren:
Legen Sie stattdessen die lokale Umgebungsvariable
DATABRICKS_SERVERLESS_COMPUTE_ID
aufauto
fest. Wenn diese Umgebungsvariable festgelegt ist, ignoriert Databricks Connect diecluster_id
.Legen Sie in einem lokalen Databricks-Konfigurationsprofil fest
serverless_compute_id = auto
, und verweisen Sie dann auf dieses Profil aus Ihrem Code.[DEFAULT] host = https://my-workspace.cloud.databricks.com/ serverless_compute_id = auto token = dapi123...
Oder verwenden Sie eine der folgenden Optionen:
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()
Hinweis
Die serverlose Computesitzung ist nach 10 Minuten Inaktivität nicht mehr vorhanden. Danach sollte eine neue Spark-Sitzung erstellt getOrCreate()
werden, um eine Verbindung mit serverlosem Compute herzustellen.
Überprüfen der Verbindung mit Databricks
Um Ihre Umgebung zu überprüfen, werden Standardanmeldeinformationen und die Verbindung zur Berechnung ordnungsgemäß für Databricks Connect eingerichtet, führen Sie den databricks-connect test
-Befehl aus, der mit einem Nicht-Null-Exitcode fehlschlägt und eine entsprechende Fehlermeldung angezeigt wird, wenn eine Inkompatibilität im Setup erkannt wird.
databricks-connect test
In Databricks Connect 14.3 und höher können Sie Ihre Umgebung auch mithilfe von validateSession()
:
DatabricksSession.builder.validateSession(True).getOrCreate()
Deaktivieren von Databricks Connect
Databricks Connect-Dienste (und die zugrunde liegenden Spark Connect-Dienste) können für jeden Cluster deaktiviert werden.
Um den Databricks Connect-Dienst zu deaktivieren, legen Sie die folgende Spark-Konfiguration für das Cluster fest.
spark.databricks.service.server.enabled false