Delen via


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.

  1. 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, zoals spark.range(1,10).show(). Als er geen fouten zijn, hebt u verbinding gemaakt.

  2. 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 het SparkSession 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.

  3. Als u de Spark-shell wilt stoppen, drukt Ctrl + d of Ctrl + zvoert u de opdracht quit() of exit().

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.