Freigeben über


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.

  1. 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, z spark.range(1,10).show(). B. . Wenn keine Fehler vorhanden sind, haben Sie erfolgreich eine Verbindung hergestellt.

  2. 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, um SparkSession 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.

  3. Um die Spark-Shell zu beenden, drücken Sie Ctrl + d oder Ctrl + z, oder führen Sie den Befehl quit() oder exit() 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.