Geavanceerd gebruik van Databricks Connect voor Python
Notitie
Dit artikel bevat informatie over Databricks Connect voor Databricks Runtime 14.0 en hoger.
In dit artikel worden onderwerpen beschreven die verder gaan dan de basisinstallatie van Databricks Connect.
De Spark Connect-verbindingsreeks configureren
Naast het maken van verbinding met uw cluster met behulp van de opties die worden beschreven in Een verbinding met een cluster configureren, is er een geavanceerdere optie om verbinding te maken met behulp van de Spark Connect-verbindingsreeks. U kunt de tekenreeks doorgeven in de remote
functie of de SPARK_REMOTE
omgevingsvariabele instellen.
Notitie
U kunt alleen een persoonlijke toegangstokenverificatie van Databricks gebruiken om verbinding te maken met behulp van de Spark Connect-verbindingsreeks.
De verbindingsreeks instellen met behulp van de remote
functie:
# 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()
U kunt ook de SPARK_REMOTE
omgevingsvariabele instellen:
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
Initialiseer vervolgens de DatabricksSession
klasse als volgt:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Pyspark-shell
Databricks Connect voor Python wordt geleverd met een pyspark
binair bestand dat een PySpark REPL (een Spark-shell) is die is geconfigureerd voor het gebruik van Databricks Connect.
Wanneer de shell zonder extra parameters begint, worden standaardreferenties opgehaald uit de omgeving (bijvoorbeeld de DATABRICKS_
omgevingsvariabelen of het DEFAULT
configuratieprofiel) om verbinding te maken met het Azure Databricks-cluster. Zie Compute-configuratie voor Databricks Connect voor informatie over het configureren van een verbinding.
Als u de Spark-shell wilt starten en deze wilt verbinden met uw actieve cluster, voert u een van de volgende opdrachten uit vanuit uw geactiveerde virtuele Python-omgeving:
pyspark
De Spark-shell wordt weergegeven, bijvoorbeeld:
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'. >>>
Zodra de shell is gestart, is het
spark
object beschikbaar om Apache Spark-opdrachten uit te voeren op het Databricks-cluster. Voer een eenvoudige PySpark-opdracht uit, zoalsspark.range(1,10).show()
. Als er geen fouten zijn, hebt u verbinding gemaakt.Raadpleeg Interactieve analyse met de Spark Shell voor informatie over het gebruik van de Spark-shell met Python om opdrachten uit te voeren op uw berekening.
Gebruik de ingebouwde
spark
variabele om hetSparkSession
op uw actieve cluster weer te geven, bijvoorbeeld:>>> 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
Alle Python-code wordt lokaal uitgevoerd, terwijl alle PySpark-code met betrekking tot DataFrame-bewerkingen wordt uitgevoerd op het cluster in de externe Azure Databricks-werkruimte en antwoorden worden teruggestuurd naar de lokale beller.
Als u de Spark-shell wilt stoppen, drukt
Ctrl + d
ofCtrl + z
voert u de opdrachtquit()
ofexit()
.
Aanvullende HTTP-headers
Databricks Connect communiceert met de Databricks-clusters via gRPC via HTTP/2.
Sommige geavanceerde gebruikers kunnen ervoor kiezen om een proxyservice te installeren tussen de client en het Azure Databricks-cluster, om betere controle te hebben over de aanvragen die afkomstig zijn van hun clients.
Voor de proxy's zijn in sommige gevallen mogelijk aangepaste headers in de HTTP-aanvragen vereist.
De headers()
methode kan worden gebruikt om aangepaste headers toe te voegen aan hun HTTP-aanvragen.
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
Certificaten
Als uw cluster afhankelijk is van een aangepast SSL/TLS-certificaat om een FQDN (Fully Qualified Domain Name) van een Azure Databricks-werkruimte op te lossen, moet u de omgevingsvariabele GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
instellen op uw lokale ontwikkelcomputer. Deze omgevingsvariabele moet worden ingesteld op het volledige pad naar het geïnstalleerde certificaat op het cluster.
U stelt deze omgevingsvariabele bijvoorbeeld als volgt in Python-code in:
import os
os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"
Zie de documentatie van uw besturingssysteem voor andere manieren om omgevingsvariabelen in te stellen.
Logboekregistratie en foutopsporingslogboeken
Databricks Connect voor Python produceert logboeken met behulp van standaard Python-logboekregistratie.
Logboeken worden verzonden naar de standaardfoutstroom (stderr) en ze zijn standaard alleen logboeken op WAARSCHUWINGsniveau en hoger worden verzonden.
Als u een omgevingsvariabele instelt, wordt deze standaardinstelling SPARK_CONNECT_LOG_LEVEL=debug
gewijzigd en worden alle logboekberichten op niveau DEBUG
en hoger afgedrukt.