Databricks Connectにおけるコンピュートの設定
この記事では、Databricks Runtime13.3LTS以降のDatabricks Connectについて説明します。
この記事では、 Databricks Connect と Databricks クラスター または サーバレス コンピュートとの間の接続を確立するためのプロパティを構成します。 この情報は、特に明記されていない限り、Python および Scala バージョンの Databricks Connect に適用されます。
Databricks Connectを使用すると、Visual Studio Code、PyCharm 、RStudio Desktop、IntelliJ IDEAのような人気のIDE、ノートブック サーバー、その他のカスタム アプリケーションなどの一般的な を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) 認証の場合は、コードを実行する前に Databricks CLI を使用して認証する必要があります。Databricks Connect for Python チュートリアルまたは Databricks Connect for Scala チュートリアルを参照してください。
クラスターへの接続を構成する
クラスターへの接続を構成するには、複数の方法があります。 Databricks Connect は、次の順序で構成プロパティを検索し、最初に見つかった構成を使用します。 詳細な構成情報については、「 Databricks Connect for Python の高度な使用法」を参照してください。
- DatabricksSessionクラスの remote() メソッド。
- Databricks 構成プロファイル
- DATABRICKS_CONFIG_PROFILE 環境変数
- 各構成プロパティの環境変数
- デフォルトという名前の Databricks 構成プロファイル
DatabricksSession
クラスの remote()
メソッド
このオプション ( Databricksパーソナルアクセストークン 認証 のみに適用される) では、ワークスペースインスタンス名、 Databricksパーソナルアクセストークン、およびクラスターの 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 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