コンピュート configuration for Databricks Connect
この記事では、Databricks Runtime13.3LTLTS以降のDatabricks Connectについて説明します。
この記事では、 Databricks Connect と Databricks クラスター または サーバレス コンピュートとの間の接続を確立するためのプロパティを構成します。 この情報は、特に明記されていない限り、Python および Scala バージョンの Databricks Connect に適用されます。
Databricks ConnectIDEsを使用すると、Visual Studio Code、PyCharm 、RStudio Desktop、IntelliJ IDEA 、ノートブック サーバー、その他のカスタム アプリケーションなどの一般的な をDatabricks クラスターに接続できます。「Databricks Connect とは」を参照してください。
必要条件
Databricks コンピュートへの接続を設定するには、次のものが必要です。
-
Databricks Connect がインストールされている。 Databricks Connect の特定の言語バージョンのインストール要件と手順については、以下を参照してください。
-
Unity Catalog が有効になっている Databricks アカウントとワークスペース。 「Unity Catalog の設定と管理」および「Unity Catalog のワークスペースを有効にする」を参照してください。
-
コンピュートの Databricks Runtime バージョンは、 Databricks Connect パッケージバージョン以上である必要があります。 Databricks では、Databricks Runtime のバージョンと一致する Databricks Connect の最新のパッケージを使用することをお勧めします。 コンピュートのバージョン要件については、Databricks Connect for the Python または Databricks Connect for Scalaのバージョン サポート マトリックスを参照してください。
Databricks Runtime の新しいバージョンで使用できる機能を使用するには、Databricks Connect パッケージをアップグレードする必要があります。 利用可能な Databricks Connect リリースの一覧については、 Databricks Connect のリリースノート を参照してください。 Databricks Runtime バージョンのリリースノートについては、「Databricks Runtime リリースノートのバージョンと互換性」を参照してください。
-
クラシック コンピュートを使用している場合、クラスターでは Assigned または Shared のクラスター アクセス モードを使用する必要があります。 「アクセスモード」を参照してください。
セットアップ
始める前に、次のものが必要です。
- クラスターに接続している場合は、クラスターの ID。 クラスター ID は URL から取得できます。 クラスター URL と IDを参照してください。
- Databricks ワークスペース インスタンス名。 これは、コンピュートの サーバーホスト名 の値です。 「Databricks コンピュート リソースの接続の詳細を取得する」を参照してください。
- 使用する Databricks 認証の種類 に必要なその他のプロパティ。
-
OAuth ユーザー間 (U2M) 認証 と OAuth マシン間 (M2M) 認証 は、Databricks SDK for Python 0.19.0 以降でサポートされています。 OAuth U2M または M2M 認証を使用するには、コード プロジェクトにインストールされている Databricks SDK for Python のバージョンを 0.19.0 以降に更新します。 「Databricks SDK for Python の使用を開始する」を参照してください。
OAuth U2M 認証の場合、Python コードを実行する前に、Databricks CLI を使用して認証する必要があります。 チュートリアルを参照してください。
-
Google Cloud 資格情報認証 と Google Cloud ID 認証 は、Databricks SDK for Python 0.14.0 以降でサポートされています。 Google Cloud 資格情報認証または ID 認証を使用するには、コード プロジェクトにインストールされている Databricks SDK for Python のバージョンを 0.14.0 以降に更新します。 「Databricks SDK for Python の使用を開始する」を参照してください。
クラスターへの接続を構成する
クラスターへの接続を構成するには、複数の方法があります。 Databricks Connect は、次の順序で構成プロパティを検索し、最初に見つかった構成を使用します。 詳細な構成情報については、「 Databricks Connect for Python の高度な使用法」を参照してください。
- データブリックスセッションクラスの remote () メソッド。
- Databricks 構成プロファイル
- DATABRICKS_CONFIG_PROFILE 環境変数
- 各構成プロパティの環境変数
- デフォルトという名前の Databricks 構成プロファイル
DatabricksSession
クラスの remote()
メソッド
このオプション ( Databricks personal access token 認証 のみに適用される) では、ワークスペースインスタンス名、 Databricks personal access トークン、およびクラスターの ID を指定します。
DatabricksSession
クラスは、いくつかの方法で初期化できます。
DatabricksSession.builder.remote()
でhost
、token
、cluster_id
の各フィールドを設定します。- Databricks SDK の
Config
クラスを使用します。 - Databricks 構成プロファイルを
cluster_id
フィールドと共に指定します。
Databricks では、これらの接続プロパティをコードで指定する代わりに、このセクション全体で説明するように、環境変数または構成ファイルを使用してプロパティを構成することをお勧めします。 次のコード例では、提案された retrieve_*
関数の実装を提供して、ユーザーまたは他の構成ストア( Google Cloud Secret Manager など)から必要なプロパティを取得することを前提としています。
これらの各アプローチのコードは次のとおりです。
- 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
. - Google Cloud 認証情報認証 の場合(サポートされている場合):
host
およびgoogle_credentials
。 - Google Cloud ID 認証 の場合(サポートされている場合):
host
およびgoogle_service_acccount
。
次に、構成クラスを使用して、この構成プロファイルの名前を設定します。
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
. - Google Cloud 認証情報認証 の場合(サポートされている場合):
host
およびgoogle_credentials
。 - Google Cloud ID 認証 の場合(サポートされている場合):
host
およびgoogle_service_acccount
。
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
. - Google Cloud 認証情報認証 の場合(サポートされている場合):
DATABRICKS_HOST
およびGOOGLE_CREDENTIALS
。 - Google Cloud ID 認証 の場合(サポートされている場合):
DATABRICKS_HOST
およびGOOGLE_SERVICE_ACCOUNT
。
次に、 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
. - Google Cloud 認証情報認証 の場合(サポートされている場合):
host
およびgoogle_credentials
。 - Google Cloud ID 認証 の場合(サポートされている場合):
host
およびgoogle_service_acccount
。
この設定プロファイルに DEFAULT
という名前を付けます。
次に、 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 for Python でのみサポートされています。
- Python と 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 as SparkSession
spark = DatabricksSession.builder.serverless(True).getOrCreate()
from databricks.connect import DatabricksSession as SparkSession
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