Databricks Connect for Python の高度な使用方法

Note

この記事では、Databricks Runtime 14.0 以降用の Databricks Connect について説明します。

この記事では、Databricks Connect の基本的なセットアップ以上のトピックについて説明します。

Spark Connect 接続文字列を構成する

クラスターへの接続を構成する」で説明されているオプションを使用してクラスターに接続するよりも詳細なオプションが、Spark Connect 接続文字列を使用した接続です。 remote 関数で文字列を渡すか、SPARK_REMOTE 環境変数を設定できます。

Note

Spark Connect 接続文字列を使用して接続するには、Databricks 個人用アクセス トークン認証のみを使用できます。

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 シェル

Databricks Connect for Python には、Databricks Connect を使用するように構成された PySpark REPL (Spark シェル) である pyspark バイナリが付属しています。 REPL を起動するには、次を実行します。

pyspark

追加のパラメータを指定せずに起動すると、環境 (DATABRICKS_ 環境変数や DEFAULT 構成プロファイルなど) から既定の資格情報が取得され、Azure Databricks クラスターに接続されます。

REPL が起動すると、Databricks クラスターで Apache Spark コマンドを実行するように構成された spark オブジェクトが利用可能になります。

>>> spark.range(3).show()
+---+
| id|
+---+
|  0|
|  1|
|  2|
+---+

別のリモートに接続するように REPL を構成するには、Spark Connect 接続文字列--remote パラメータを構成します。

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

シェルを停止するには、Ctrl + d または Ctrl + z を押すか、コマンド quit() または exit() を実行します。

追加の HTTP ヘッダー

Databricks Connect は、gRPC over HTTP/2 経由で Databricks クラスターと通信します。

一部の上級ユーザーは、クライアントから送信される要求をより適切に制御するために、クライアントと Azure Databricks クラスターの間にプロキシ サービスをインストールすることを選択できます。

場合によっては、プロキシで HTTP 要求にカスタム ヘッダーが必要になる場合があります。

headers() メソッドを使用して、カスタム ヘッダーを HTTP 要求に追加できます。

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

証明書

クラスターが Azure Databricks ワークスペースの完全修飾ドメイン名 (FQDN) を解決するためにカスタム SSL/TLS 証明書を必要とする場合は、お使いのローカル開発マシンに環境変数 GRPC_DEFAULT_SSL_ROOTS_FILE_PATH を設定する必要があります。 この環境変数は、クラスターにインストールされている証明書への完全なパスに設定する必要があります。

たとえば、Python コードではこの環境変数を次のように設定します。

import os

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

環境変数を設定するその他の方法については、お使いのオペレーティング システムのドキュメントを参照してください。

ログとデバッグ ログ

Databricks Connect for Python では、標準の Python ログを使用してログが生成されます。

ログは標準エラー ストリーム (stderr) に出力され、既定では WARN レベル以上のログのみが出力されます。

環境変数 SPARK_CONNECT_LOG_LEVEL=debug を設定すると、この既定値が変更され、DEBUG レベル以上のすべてのログ メッセージが出力されます。