共用方式為


適用於 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 的計算組態。

  1. 若要啟動 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()。 如果沒有錯誤,您已成功連線。

  2. 如需如何使用 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 工作區的叢集上執行,並執行回應會傳回給本機呼叫者。

  3. 若要停止 Spark 殼層,請按 Ctrl + dCtrl + 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