適用於 Python 的 Databricks Connect 進階使用方式
注意
本文涵蓋 Databricks Connect for Databricks Runtime 14.0 和更新版本。
本文說明超越 Databricks Connect 基本設定的主題。
設定 Spark Connect 連接字串
除了使用設定叢集連線中所述的選項來連線到叢集之外,更進階的選項是使用Spark Connect 連接字串 進行連線。 您可以在函式中 remote
傳遞字串,或設定 SPARK_REMOTE
環境變數。
注意
您只能使用 Databricks 個人存取令牌驗證,使用 Spark Connect 連接字串 進行連線。
若要使用 remote
函式來設定 連接字串:
# 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()
或者,設定 SPARK_REMOTE
環境變數:
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
然後初始化 類別, DatabricksSession
如下所示:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Pyspark 殼層
適用於 Python 的 Databricks Connect 隨附二 pyspark
進位檔,這是設定為使用 Databricks Connect 的 PySpark REPL (Spark 殼層)。
當開始使用沒有其他參數時,殼層會從環境挑選預設認證(例如 DATABRICKS_
,環境變數或 DEFAULT
組態配置檔),以聯機到 Azure Databricks 叢集。 如需設定連線的相關信息,請參閱 Databricks Connect 的計算組態。
若要啟動 Spark 殼層,並將其連線到執行中的叢集,請從您啟動的 Python 虛擬環境執行下列其中一個命令:
pyspark
Spark 殼層隨即出現,例如:
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'. >>>
殼層啟動時,
spark
物件即可在 Databricks 叢集上執行 Apache Spark 命令。 執行簡單的 PySpark 命令,例如spark.range(1,10).show()
。 如果沒有錯誤,您已成功連線。如需如何使用 Spark 殼層搭配 Python 在計算上執行命令的資訊,請參閱 Spark 殼層的互動式分析。
使用內
spark
建變數來代表SparkSession
執行中叢集上的 ,例如:>>> 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
所有 Python 程式代碼都會在本機執行,而涉及 DataFrame 作業的所有 PySpark 程式代碼都會在遠端 Azure Databricks 工作區的叢集上執行,並執行回應會傳回給本機呼叫者。
若要停止 Spark 殼層,請按
Ctrl + d
或Ctrl + z
,或執行 命令quit()
或exit()
。
其他 HTTP 標頭
Databricks Connect 透過 HTTP/2 透過 gRPC 與 Databricks 叢集通訊。
某些進階使用者可能會選擇在用戶端與 Azure Databricks 叢集之間安裝 Proxy 服務,以更妥善地控制來自其用戶端的要求。
在某些情況下,Proxy 可能需要 HTTP 要求中的自定義標頭。
headers()
方法可用來將自定義標頭新增至其 HTTP 要求。
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
憑證
如果您的叢集依賴自定義 SSL/TLS 憑證來解析 Azure Databricks 工作區完整功能變數名稱 (FQDN),您必須在本機開發電腦上設定環境變數 GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
。 此環境變數必須設定為叢集上安裝憑證的完整路徑。
例如,您會在 Python 程式代碼中設定此環境變數,如下所示:
import os
os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"
如需設定環境變數的其他方式,請參閱作業系統的檔。
記錄和偵錯記錄
適用於 Python 的 Databricks Connect 會使用標準 Python 記錄來產生記錄。
記錄會發出至標準錯誤數據流 (stderr),根據預設,它們只會發出WARN 層級和更高層級的記錄。
設定環境變數 SPARK_CONNECT_LOG_LEVEL=debug
會修改此預設值,並列印層級和更高層級的所有記錄訊息 DEBUG
。