Databricks Connectにおけるコンピュートの設定
この記事では、Databricks Runtime13.3LTS以降のDatabricks Connectについて説明します。
このページでは、 Databricks Connect と Databricks クラスタ または サーバレス コンピュート間の接続を設定するさまざまな方法について説明します。
Databricks Connectを使用すると、Visual Studio Code、PyCharm 、RStudio Desktop、IntelliJ IDEAのような人気のIDE、ノートブック サーバー、その他のカスタム アプリケーションなどの一般的な をDatabricks クラスターに接続できます。「Databricks Connect とは」を参照してください。
セットアップ
始める前に、次のものが必要です。
- Databricks Connect がインストールされている。インストール要件については、「 Databricks Connect の使用要件」を参照してください。
- Databricks ワークスペース インスタンス名。 これは、コンピュートの サーバーホスト名 の値です。 Databricks コンピュート リソースの接続の詳細を取得するを参照してください。
- クラシックコンピュートに接続する場合は、クラスタリングのID。 URLからクラスタリングIDを取得できます。 コンピュート・リソースのURLおよびIDを参照してください。
クラスターへの接続を構成する
クラスターへの接続を構成する方法は複数あります。Databricks Connect は、次の順序で構成プロパティを検索し、最初に見つかった構成を使用します。高度な構成情報については、「 Databricks Connect の高度な使用法」を参照してください。
- DatabricksSession クラスの remote() メソッド。
- Databricks 構成プロファイル
- DATABRICKS_CONFIG_PROFILE 環境変数
- 各構成プロパティの環境変数
- デフォルトという名前の Databricks 構成プロファイル
DatabricksSession
クラスの remote()
メソッド
このオプションは、 Databricks personal アクセストークン認証 (レガシー) にのみ適用され、ワークスペース インスタンス名、 Databricks personal アクセストークン、およびクラスターの ID を指定します。
DatabricksSession
クラスは、いくつかの方法で初期化できます。
DatabricksSession.builder.remote()
でhost
、token
、cluster_id
の各フィールドを設定します。- Databricks SDK の
Config
クラスを使用します。 - Databricks 構成プロファイルを
cluster_id
フィールドと共に指定します。
Databricks では、これらの接続プロパティをコードで指定する代わりに、このセクション全体で説明するように、環境変数または構成ファイルを使用してプロパティを構成することをお勧めします。 次のコード例では、提案された retrieve_*
関数の実装を提供して、ユーザーまたは他の構成ストア ( AWS Systems Manager Parameter Store など) から必要なプロパティを取得することを前提としています。
これらの各アプローチのコードは次のとおりです。
- Python
- Scala
# Set the host, token, and cluster_id fields in DatabricksSession.builder.remote.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.remote(
host = f"https://{retrieve_workspace_instance_name()}",
token = retrieve_token(),
cluster_id = retrieve_cluster_id()
).getOrCreate()
// Set the host, token, and clusterId fields in DatabricksSession.builder.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder()
.host(retrieveWorkspaceInstanceName())
.token(retrieveToken())
.clusterId(retrieveClusterId())
.getOrCreate()
- Python
- Scala
# Use the Databricks SDK's Config class.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config
config = Config(
host = f"https://{retrieve_workspace_instance_name()}",
token = retrieve_token(),
cluster_id = retrieve_cluster_id()
)
spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()
// Use the Databricks SDK's Config class.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig
val config = new DatabricksConfig()
.setHost(retrieveWorkspaceInstanceName())
.setToken(retrieveToken())
val spark = DatabricksSession.builder()
.sdkConfig(config)
.clusterId(retrieveClusterId())
.getOrCreate()
- Python
- Scala
# Specify a Databricks configuration profile along with the `cluster_id` field.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config
config = Config(
profile = "<profile-name>",
cluster_id = retrieve_cluster_id()
)
spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()
// Specify a Databricks configuration profile along with the clusterId field.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig
val config = new DatabricksConfig()
.setProfile("<profile-name>")
val spark = DatabricksSession.builder()
.sdkConfig(config)
.clusterId(retrieveClusterId())
.getOrCreate()
Databricks 構成プロファイル
このオプションでは、フィールドcluster_id
と、使用する Databricks認証タイプ に必要なその他のフィールドを含む Databricks 構成プロファイル を作成または特定します。
各認証タイプに必要な設定プロファイルフィールドは次のとおりです。
- Databricks 個人用アクセス トークン認証の場合:
host
とtoken
. - OAuth マシン間 (M2M) 認証 (サポートされている場合):
host
、client_id
、client_secret
。 - OAuth ユーザーツーマシン (U2M) 認証の場合 (サポートされている場合):
host
.
Databricks のユーザー名とパスワードを使用した基本認証は、2024 年 7 月 10 日にサポートが終了しました。 Databricks で管理されるパスワードのサポート終了を参照してください。
次に、構成クラスを使用して、この構成プロファイルの名前を設定します。
auth login
コマンドの --configure-cluster
オプションを使用して、新規または既存の設定プロファイルに cluster_id
フィールドを自動的に追加できます。詳細については、コマンド databricks auth login -h
.
cluster_id
はいくつかの方法で指定できます。
- 構成プロファイルに
cluster_id
フィールドを含め、構成プロファイルの名前を指定するだけです。 cluster_id
フィールドと共に設定プロファイル名を指定してください。
クラスターの ID を使用して DATABRICKS_CLUSTER_ID
環境変数をすでに設定している場合は、 cluster_id
を指定する必要はありません。
これらの各アプローチのコードは次のとおりです。
- Python
- Scala
# Include the cluster_id field in your configuration profile, and then
# just specify the configuration profile's name:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.profile("<profile-name>").getOrCreate()
// Include the cluster_id field in your configuration profile, and then
// just specify the configuration profile's name:
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig
val config = new DatabricksConfig()
.setProfile("<profile-name>")
val spark = DatabricksSession.builder()
.sdkConfig(config)
.getOrCreate()
- Python
- Scala
# Specify the configuration profile name along with the cluster_id field.
# In this example, retrieve_cluster_id() assumes some custom implementation that
# you provide to get the cluster ID from the user or from some other
# configuration store:
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config
config = Config(
profile = "<profile-name>",
cluster_id = retrieve_cluster_id()
)
spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()
// Specify a Databricks configuration profile along with the clusterId field.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig
val config = new DatabricksConfig()
.setProfile("<profile-name>")
val spark = DatabricksSession.builder()
.sdkConfig(config)
.clusterId(retrieveClusterId())
.getOrCreate()
DATABRICKS_CONFIG_PROFILE
環境変数
このオプションでは、フィールドcluster_id
と、使用する Databricks認証タイプ に必要なその他のフィールドを含む Databricks 構成プロファイル を作成または特定します。
クラスターの ID を使用して DATABRICKS_CLUSTER_ID
環境変数をすでに設定している場合は、 cluster_id
を指定する必要はありません。
各認証タイプに必要な設定プロファイルフィールドは次のとおりです。
- Databricks 個人用アクセス トークン認証の場合:
host
とtoken
. - OAuth マシン間 (M2M) 認証 (サポートされている場合):
host
、client_id
、client_secret
。 - OAuth ユーザーツーマシン (U2M) 認証の場合 (サポートされている場合):
host
.
Databricks のユーザー名とパスワードを使用した基本認証は、2024 年 7 月 10 日にサポートが終了しました。 Databricks で管理されるパスワードのサポート終了を参照してください。
auth login
コマンドの--configure-cluster
を使用して、新規または既存の設定プロファイルに cluster_id
フィールドを自動的に追加できます。詳細については、コマンド databricks auth login -h
.
DATABRICKS_CONFIG_PROFILE
環境変数をこの構成プロファイルの名前に設定します。次に、 DatabricksSession
クラスを初期化します。
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
各構成プロパティの環境変数
このオプションでは、DATABRICKS_CLUSTER_ID
環境変数と、使用する Databricks 認証タイプに必要なその他の環境変数を設定します。
各認証タイプに必要な環境変数は次のとおりです。
- Databricks 個人用アクセス トークン認証の場合:
DATABRICKS_HOST
とDATABRICKS_TOKEN
. - OAuth マシン間 (M2M) 認証の場合:
DATABRICKS_HOST
、DATABRICKS_CLIENT_ID
、DATABRICKS_CLIENT_SECRET
。 - OAuth ユーザー間 (U2M) 認証の場合:
DATABRICKS_HOST
.
Databricks のユーザー名とパスワードを使用した基本認証は、2024 年 7 月 10 日にサポートが終了しました。 Databricks で管理されるパスワードのサポート終了を参照してください。
次に、 DatabricksSession
クラスを初期化します。
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Databricks 構成プロファイル DEFAULT
このオプションでは、フィールドcluster_id
と、使用する Databricks認証タイプ に必要なその他のフィールドを含む Databricks 構成プロファイル を作成または特定します。
クラスターの ID を使用して DATABRICKS_CLUSTER_ID
環境変数をすでに設定している場合は、 cluster_id
を指定する必要はありません。
各認証タイプに必要な設定プロファイルフィールドは次のとおりです。
- Databricks 個人用アクセス トークン認証の場合:
host
とtoken
. - OAuth マシン間 (M2M) 認証 (サポートされている場合):
host
、client_id
、client_secret
。 - OAuth ユーザーツーマシン (U2M) 認証の場合 (サポートされている場合):
host
.
Databricks のユーザー名とパスワードを使用した基本認証は、2024 年 7 月 10 日にサポートが終了しました。 Databricks で管理されるパスワードのサポート終了を参照してください。
この設定プロファイルに DEFAULT
という名前を付けます。
auth login
コマンドの --configure-cluster
オプションを使用して、cluster_id
フィールドを DEFAULT
構成プロファイルに自動的に追加できます。詳細については、コマンド databricks auth login -h
.
次に、 DatabricksSession
クラスを初期化します。
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
サーバレス コンピュートへの接続を構成する
プレビュー
この機能は パブリック プレビュー段階です。
Databricks Connect for Python は、サーバレスコンピュートへの接続に対応しています。 この機能を使用するには、サーバレスに接続するためのバージョン要件を満たしている必要があります。 「 Databricks Connect の使用要件」を参照してください。
この機能には次の制限があります。
- この機能は、Databricks Connect for Python でのみサポートされています。
- Python と Databricks Connect のバージョンには互換性が必要です。「 Databricks Connect のバージョン」を参照してください。
- Databricks Connect for Python のすべての制限事項
- すべてのサーバレス コンピュートの制限
- UDF に使用できるのは、サーバレス コンピュート環境の一部として含まれている Python 依存関係のみです。 サーバレス環境のバージョンを参照してください。追加の依存関係はインストールできません。
- カスタムモジュールを含む UDF はサポートされていません。
サーバレス コンピュートへの接続は、次のいずれかの方法で設定できます。
-
ローカル環境変数
DATABRICKS_SERVERLESS_COMPUTE_ID
をauto
に設定します。 この環境変数が設定されている場合、Databricks Connect はcluster_id
を無視します。 -
ローカルの Databricks 構成プロファイルで、
serverless_compute_id = auto
を設定し、コードからそのプロファイルを参照します。[DEFAULT]
host = https://my-workspace.cloud.databricks.com/
serverless_compute_id = auto
token = dapi123... -
または、次のいずれかのオプションを使用します。
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.serverless(True).getOrCreate()
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.remote(serverless=True).getOrCreate()
サーバレス コンピュート セッションは、非アクティブな状態が 10 分間続くとタイムアウトになります。 この後、getOrCreate()
を使用して新しい Spark セッションを作成し、サーバレス コンピュートに接続する必要があります。
Databricks への接続を検証する
環境、デフォルト資格情報、およびコンピュートへの接続が Databricks Connectに対して正しく設定されていることを検証するには、databricks-connect test
コマンドを実行します。コマンドを実行すると、0 以外の終了コードと、セットアップで非互換性が検出されると対応するエラー メッセージが表示されます。
databricks-connect test
Databricks Connect 14.3 以降では、 validateSession()
を使用して環境を検証することもできます。
DatabricksSession.builder.validateSession(True).getOrCreate()
Databricks Connect の無効化
Databricks Connect (および基になる Spark Connect) サービスは、任意のクラスターで無効にできます。
Databricks Connectサービスを無効にするには、クラスターで次のSpark構成を設定します。
spark.databricks.service.server.enabled false