Udostępnij za pośrednictwem


Zaawansowane użycie programu Databricks Connect dla języka Python

Uwaga

W tym artykule opisano program Databricks Connect dla środowiska Databricks Runtime w wersji 14.0 lub nowszej.

W tym artykule opisano tematy wykraczające poza podstawową konfigurację programu Databricks Connect.

Konfigurowanie parametry połączenia Spark Connect

Oprócz nawiązywania połączenia z klastrem przy użyciu opcji opisanych w temacie Konfigurowanie połączenia z klastrem bardziej zaawansowana opcja polega na połączeniu przy użyciu parametry połączenia Spark Connect. Możesz przekazać ciąg w remote funkcji lub ustawić zmienną SPARK_REMOTE środowiskową.

Uwaga

Do nawiązania połączenia przy użyciu parametry połączenia Spark Connect można użyć tylko uwierzytelniania osobistego tokenu dostępu usługi Databricks.

Aby ustawić parametry połączenia przy użyciu remote funkcji :

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

Alternatywnie ustaw zmienną środowiskową SPARK_REMOTE :

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

Następnie zainicjuj klasę DatabricksSession w następujący sposób:

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Powłoka Pyspark

Program Databricks Connect dla języka Python jest dostarczany z plikiem binarnym, który jest biblioteką pyspark REPL PySpark (powłoką Spark) skonfigurowaną do korzystania z usługi Databricks Connect.

Po uruchomieniu bez dodatkowych parametrów powłoka pobiera domyślne poświadczenia ze środowiska (na przykład DATABRICKS_ zmienne środowiskowe lub DEFAULT profil konfiguracji), aby nawiązać połączenie z klastrem usługi Azure Databricks. Aby uzyskać informacje na temat konfigurowania połączenia, zobacz Konfiguracja obliczeniowa dla usługi Databricks Connect.

  1. Aby uruchomić powłokę Spark i połączyć ją z uruchomionym klastrem, uruchom jedno z następujących poleceń z aktywowanego środowiska wirtualnego języka Python:

    pyspark
    

    Zostanie wyświetlona powłoka Spark, na przykład:

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

    Po uruchomieniu spark powłoki obiekt jest dostępny do uruchamiania poleceń platformy Apache Spark w klastrze usługi Databricks. Uruchom proste polecenie PySpark, takie jak spark.range(1,10).show(). Jeśli nie ma żadnych błędów, połączenie zostało pomyślnie nawiązane.

  2. Zapoznaj się z tematem Interactive Analysis with the Spark Shell (Interaktywna analiza za pomocą powłoki Spark w powłoce Spark w języku Python) w celu uruchamiania poleceń w obliczeniach.

    Użyj wbudowanej spark zmiennej do reprezentowania SparkSession elementu w uruchomionym klastrze, na przykład:

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

    Cały kod w języku Python działa lokalnie, podczas gdy cały kod PySpark obejmujący operacje ramki danych jest uruchamiany w klastrze w zdalnym obszarze roboczym usługi Azure Databricks i uruchamiane odpowiedzi są wysyłane z powrotem do lokalnego obiektu wywołującego.

  3. Aby zatrzymać powłokę Spark, naciśnij Ctrl + d lub Ctrl + z, lub uruchom polecenie quit() lub exit().

Dodatkowe nagłówki HTTP

Usługa Databricks Connect komunikuje się z klastrami usługi Databricks za pośrednictwem protokołu gRPC za pośrednictwem protokołu HTTP/2.

Niektórzy zaawansowani użytkownicy mogą zdecydować się na zainstalowanie usługi proxy między klientem a klastrem usługi Azure Databricks, aby mieć lepszą kontrolę nad żądaniami pochodzącymi z klientów.

Serwery proxy, w niektórych przypadkach, mogą wymagać niestandardowych nagłówków w żądaniach HTTP.

Metoda headers() może służyć do dodawania niestandardowych nagłówków do żądań HTTP.

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

Certyfikaty

Jeśli klaster korzysta z niestandardowego certyfikatu SSL/TLS, aby rozpoznać obszar roboczy usługi Azure Databricks w pełni kwalifikowaną nazwę domeny (FQDN), musisz ustawić zmienną środowiskową GRPC_DEFAULT_SSL_ROOTS_FILE_PATH na lokalnej maszynie dewelopera. Ta zmienna środowiskowa musi być ustawiona na pełną ścieżkę do zainstalowanego certyfikatu w klastrze.

Można na przykład ustawić tę zmienną środowiskową w kodzie języka Python w następujący sposób:

import os

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

Inne sposoby ustawiania zmiennych środowiskowych można znaleźć w dokumentacji systemu operacyjnego.

Rejestrowanie i debugowanie dzienników

Program Databricks Connect dla języka Python tworzy dzienniki przy użyciu standardowego rejestrowania języka Python.

Dzienniki są emitowane do standardowego strumienia błędów (stderr), a domyślnie są to tylko dzienniki na poziomie WARN i wyższe są emitowane.

Ustawienie zmiennej środowiskowej spowoduje zmodyfikowanie tej wartości domyślnej SPARK_CONNECT_LOG_LEVEL=debug i wyświetlenie wszystkich komunikatów dziennika na DEBUG poziomie i wyższym.