Dela via


Avancerad användning av Databricks Connect för Python

Kommentar

Den här artikeln beskriver Databricks Connect för Databricks Runtime 14.0 och senare.

Den här artikeln beskriver ämnen som går utöver den grundläggande installationen av Databricks Connect.

Konfigurera Spark Connect-anslutningssträng

Förutom att ansluta till klustret med hjälp av alternativen som beskrivs i Konfigurera en anslutning till ett kluster är ett mer avancerat alternativ att ansluta med Spark Connect-anslutningssträng. Du kan skicka strängen i funktionen remote eller setSPARK_REMOTE miljövariabeln.

Kommentar

Du kan bara använda en personlig Databricks-åtkomsttokenautentisering för att ansluta med Spark Connect-anslutningssträng.

För att set anslutningssträngen med remote-funktionen:

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

Alternativt kan du ställa in miljövariabeln set till SPARK_REMOTE:

sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>

Initiera sedan klassen enligt DatabricksSession följande:

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Pyspark-gränssnitt

Databricks Connect för Python levereras med en pyspark binär fil som är en PySpark REPL (ett Spark-gränssnitt) som konfigurerats för att använda Databricks Connect.

När det startas utan ytterligare parametershämtar skalet standardvärdet credentials från miljön (till exempel DATABRICKS_-miljövariabler eller DEFAULT-konfigurationsprofilen) för att ansluta till Azure Databricks-klustret. Information om hur du konfigurerar en anslutning finns i Beräkningskonfiguration för Databricks Connect.

  1. Om du vill starta Spark-gränssnittet och ansluta det till ditt kluster som körs kör du något av följande kommandon från den aktiverade virtuella Python-miljön:

    pyspark
    

    Spark-gränssnittet visas till exempel:

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

    När gränssnittet startar är objektet spark tillgängligt för att köra Apache Spark-kommandon i Databricks-klustret. Kör ett enkelt PySpark-kommando, till exempel spark.range(1,10).show(). Om det inte finns några fel har du anslutit.

  2. Se Interaktiv analys med Spark Shell för information om hur du använder Spark-gränssnittet med Python för att köra kommandon på din beräkning.

    Använd den inbyggda spark variabeln för att representera SparkSession på det kluster som körs, till exempel:

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

    All Python-kod körs lokalt, medan all PySpark-kod som involverar DataFrame-åtgärder körs på klustret på den fjärranslutna Azure Databricks-arbetsytan och körningssvar skickas tillbaka till den lokala anroparen.

  3. Om du vill stoppa Spark-gränssnittet trycker Ctrl + d du på eller Ctrl + z, eller kör kommandot quit() eller exit().

Ytterligare HTTP-huvuden

Databricks Connect kommunicerar med Databricks-kluster via gRPC via HTTP/2.

Vissa avancerade användare kan välja att installera en proxytjänst mellan klienten och Azure Databricks-klustret för att få bättre kontroll över de begäranden som kommer från deras klienter.

Proxyservrarna kan i vissa fall kräva anpassade huvuden i HTTP-begäranden.

Metoden headers() kan användas för att lägga till anpassade huvuden i sina HTTP-begäranden.

spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()

Certifikat

Om klustret förlitar sig på ett anpassat SSL/TLS-certifikat för att lösa ett fullständigt kvalificerat domännamn för Azure Databricks-arbetsytan (FQDN), måste du set miljövariabeln GRPC_DEFAULT_SSL_ROOTS_FILE_PATH på den lokala utvecklingsdatorn. Den här miljövariabeln måste vara set till den fullständiga sökvägen till det installerade certifikatet i klustret.

Du set till exempel den här miljövariabeln i Python-kod på följande sätt:

import os

os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"

Andra sätt att set miljövariabler finns i dokumentationen för ditt operativsystem.

Loggning och felsökningsloggar

Databricks Connect för Python skapar loggar med python-standardloggning.

Loggar skickas till standardfelströmmen (stderr) och som standard genereras endast loggar på WARN-nivå och högre.

Om du anger en miljövariabel ändras den här standardinställningen SPARK_CONNECT_LOG_LEVEL=debug och alla loggmeddelanden skrivs ut på nivån DEBUG och högre.