Databricks Connect の高度な使用法
この記事では、Databricks Runtime 14.0 以降の Databricks Connect について説明します。
この記事では、Databricks Connect の基本的なセットアップを超えるトピックについて説明します。
Spark Connect 接続文字列を構成する
クラスターへの接続を構成するで説明されているオプションを使用してクラスターに接続するだけでなく、より高度なオプションは Spark Connect 接続文字列を使用して接続することです。文字列を remote
関数に渡すか、 SPARK_REMOTE
環境変数を設定できます。
Databricks personal アクセストークン認証のみを使用して、Spark Connect 接続文字列を使用して接続できます。
- Python
- Scala
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()
SPARK_REMOTE
環境変数を設定します。
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
次に、 DatabricksSession
クラスを初期化します。
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder.getOrCreate()
追加の HTTP ヘッダー
Databricks Connect は、gRPC over HTTP/2 を介して Databricks クラスターと通信します。
クライアントからの要求をより適切に制御するために、上級ユーザーはクライアントと Databricks クラスターの間にプロキシ サービスをインストールすることを選択できます。場合によっては、プロキシは HTTP リクエストでカスタムヘッダーを必要とする場合があります。
header() メソッドを使用して、カスタム ヘッダーを HTTP リクエストに追加します。
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder.header("x-custom-header", "value").getOrCreate()
証明書
クラスターがカスタム SSL/TLS 証明書に依存して Databricks ワークスペースの完全修飾ドメイン名 (FQDN) を解決する場合は、ローカル開発マシンで環境変数 GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
を設定する必要があります。 この環境変数は、クラスタにインストールされている証明書のフルパスに設定する必要があります。
- Python
- Scala
次の例では、この環境変数を設定します。
import os
os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"
環境変数を設定するその他の方法については、オペレーティングシステムのドキュメントを参照してください。
Java と Scala では、環境変数をプログラムで構成する方法は提供されていません。オペレーティングシステムまたはIDEのドキュメントを参照して、アプリケーションの一部として設定する方法については、情報を参照してください。
ログとデバッグログ
- Python
- Scala
Databricks Connect for Python では、標準の Python ログを使用してログが生成されます。
ログは標準エラーストリーム ( stderr ) に出力され、デフォルトではオフになっています。環境変数 SPARK_CONNECT_LOG_LEVEL=debug
を設定すると、このデフォルトが変更され、 DEBUG
レベル以上のすべてのログ メッセージが出力されます。
Databricks Connect for Scala では SLF4J ログが使用され、SLF4J プロバイダーには付属していません。
Databricks Connect を使用するアプリケーションには、SLF4J プロバイダーが含まれ、場合によってはログ メッセージを出力するように構成されることが期待されます。
- 最も簡単なオプションは、標準エラーストリーム ( stderr) の レベル以上のログ メッセージを出力する slf4j-simpleプロバイダー
INFO
を含めることです。 - より構成可能な代替手段は、クラスパス内の
log4j.properties
ファイルから構成を取得するslf4j-reload4jプロバイダを使用することです。
次の例は、単純な log4j.properties
ファイルを示しています。
log4j.rootLogger=INFO,stderr
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n
前の例では、ルート ロガー(または特定のロガー)が DEBUG
レベルで設定されている場合、デバッグ ログが出力されます。
log4j.rootLogger=DEBUG,stderr