Erweiterte Nutzung von Databricks Connect für Python
Hinweis
Dieser Artikel behandelt Databricks Connect für Databricks Runtime Version 14.0 und höher.
In diesem Artikel werden Themen beschrieben, die über das grundlegende Setup von Databricks Connect hinausgehen.
Konfigurieren Sie die Spark Connect-Verbindungszeichenfolge
Zusätzlich zu den unter Konfigurieren einer Verbindung zu einem Cluster beschriebenen Optionen können Sie eine Verbindung zu Ihrem Cluster herstellen, indem Sie die Spark Connect-Verbindungszeichenfolge verwenden. Sie können die Zeichenfolge in der Funktion remote
übergeben oder die Umgebungsvariable SPARK_REMOTE
festlegen.
Hinweis
Sie können nur eine Databricks-Authentifizierung für persönliche Zugriffstoken verwenden, um eine Verbindung mit der Spark Connect-Verbindungszeichenfolge herzustellen.
So legen Sie die Verbindungszeichenfolge mithilfe der Funktion remote
fest:
# Set the Spark Connect connection string in DatabricksSession.builder.remote.
from databricks.connect import DatabricksSession
workspace_instance_name = retrieve_workspace_instance_name()
token = retrieve_token()
cluster_id = retrieve_cluster_id()
spark = DatabricksSession.builder.remote(
f"sc://{workspace_instance_name}:443/;token={token};x-databricks-cluster-id={cluster_id}"
).getOrCreate()
Alternativ können Sie auch die Umgebungsvariable SPARK_REMOTE
festlegen:
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
Initialisieren Sie dann die DatabricksSession
-Klasse wie folgt:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Pyspark-Shell
Databricks Connect für Python wird mit einer pyspark
-Binärdatei bereitgestellt, bei der es sich um eine PySpark REPL (eine Spark-Shell) handelt, die für die Verwendung von Databricks Connect konfiguriert ist.
Wenn sie ohne zusätzliche Parameter gestartet wurde, wählt die Shell Standardanmeldeinformationen aus der Umgebung (z. B. die DATABRICKS_
Umgebungsvariablen oder das DEFAULT
Konfigurationsprofil) aus, um eine Verbindung mit dem Azure Databricks-Cluster herzustellen. Informationen zum Konfigurieren einer Verbindung finden Sie unter Computekonfiguration für Databricks Connect.
Um die Spark-Shell zu starten und sie mit Ihrem laufenden Cluster zu verbinden, führen Sie einen der folgenden Befehle in Ihrer aktivierten virtuellen Python-Umgebung aus:
pyspark
Die Spark-Shell wird angezeigt, z. B.:
Python 3.10 ... [Clang ...] on darwin Type "help", "copyright", "credits" or "license" for more information. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 13.x.dev0 /_/ Using Python version 3.10 ... Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=... SparkSession available as 'spark'. >>>
Sobald die Shell gestartet wird, steht das
spark
Objekt zum Ausführen von Apache Spark-Befehlen im Databricks-Cluster zur Verfügung. Führen Sie einen einfachen PySpark-Befehl aus, zspark.range(1,10).show()
. B. . Wenn keine Fehler vorhanden sind, haben Sie erfolgreich eine Verbindung hergestellt.Informationen zur Verwendung der Spark-Shell mit Python zum Ausführen von Befehlen in Ihrem Compute finden Sie unter Interaktive Analyse mit der Spark-Shell.
Verwenden Sie die integrierte Variable
spark
, umSparkSession
in Ihrem ausgeführten Cluster darzustellen, z. B.:>>> df = spark.read.table("samples.nyctaxi.trips") >>> df.show(5) +--------------------+---------------------+-------------+-----------+----------+-----------+ |tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip| +--------------------+---------------------+-------------+-----------+----------+-----------+ | 2016-02-14 16:52:13| 2016-02-14 17:16:04| 4.94| 19.0| 10282| 10171| | 2016-02-04 18:44:19| 2016-02-04 18:46:00| 0.28| 3.5| 10110| 10110| | 2016-02-17 17:13:57| 2016-02-17 17:17:55| 0.7| 5.0| 10103| 10023| | 2016-02-18 10:36:07| 2016-02-18 10:41:45| 0.8| 6.0| 10022| 10017| | 2016-02-22 14:14:41| 2016-02-22 14:31:52| 4.51| 17.0| 10110| 10282| +--------------------+---------------------+-------------+-----------+----------+-----------+ only showing top 5 rows
Der gesamte Python-Code wird lokal ausgeführt, während der gesamte PySpark-Code, einschließlich DataFrame-Vorgängen, im Cluster im Azure Databricks-Remotearbeitsbereich ausgeführt wird. Die Ausführungsantworten werden an den lokalen Aufrufer zurückgesendet.
Um die Spark-Shell zu beenden, drücken Sie
Ctrl + d
oderCtrl + z
, oder führen Sie den Befehlquit()
oderexit()
aus.
Zusätzliche HTTP-Header
Databricks Connect kommuniziert mit den Databricks-Clustern über gRPC über HTTP/2.
Einige erweiterte Benutzer können einen Proxydienst zwischen dem Client und dem Azure Databricks-Cluster installieren, um die Anforderungen, die von ihren Clients stammen, besser kontrollieren zu können.
Die Proxys erfordern in einigen Fällen möglicherweise benutzerdefinierte Header in den HTTP-Anforderungen.
Die headers()
-Methode kann verwendet werden, um ihren HTTP-Anforderungen benutzerdefinierte Header hinzuzufügen.
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
Zertifikate
Wenn Ihr Cluster auf einem benutzerdefinierten SSL/TLS-Zertifikat basiert, um einen vollqualifizierten Azure Databricks-Arbeitsbereich (Fully Qualified Domain Name, FQDN) aufzulösen, müssen Sie die Umgebungsvariable GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
auf Ihrem lokalen Entwicklungscomputer festlegen. Diese Umgebungsvariable muss auf den vollständigen Pfad zum installierten Zertifikat im Cluster festgelegt werden.
Beispielsweise legen Sie diese Umgebungsvariable im Python-Code wie folgt fest:
import os
os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"
Weitere Möglichkeiten zum Festlegen von Umgebungsvariablen finden Sie in der Dokumentation Ihres Betriebssystems.
Protokollieren und Debuggen von Protokollen
Databricks Connect für Python erzeugt Protokolle mithilfe der standardmäßigen Python-Protokollierung.
Protokolle werden an den Standardfehlerstrom (stderr) ausgegeben, und standardmäßig werden nur Protokolle auf WARN-Ebene und höher ausgegeben.
Wenn Sie eine Umgebungsvariable SPARK_CONNECT_LOG_LEVEL=debug
festlegen, wird diese Standardeinstellung geändert und alle Protokollmeldungen werden auf Ebene DEBUG
und höher gedruckt.