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.
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 exempelspark.range(1,10).show()
. Om det inte finns några fel har du anslutit.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 representeraSparkSession
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.
Om du vill stoppa Spark-gränssnittet trycker
Ctrl + d
du på ellerCtrl + z
, eller kör kommandotquit()
ellerexit()
.
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.