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.
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 jakspark.range(1,10).show()
. Jeśli nie ma żadnych błędów, połączenie zostało pomyślnie nawiązane.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 reprezentowaniaSparkSession
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.
Aby zatrzymać powłokę Spark, naciśnij
Ctrl + d
lubCtrl + z
, lub uruchom poleceniequit()
lubexit()
.
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.