コンピュート configuration for Databricks Connect

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

この記事では、 Databricks Connect と Databricks クラスター または サーバレス コンピュートとの間の接続を確立するためのプロパティを構成します。 この情報は、特に明記されていない限り、Python および Scala バージョンの Databricks Connect に適用されます。

Databricks Connect を使用すると、Visual Studio Code、PyCharm、RStudio Desktop、IntelliJ IDEA、ノートブック サーバー、その他のカスタム アプリケーションなどの一般的な IDEs を Databricks クラスターに接続できます。 「 Databricks Connect とは」を参照してください。

要件

Databricks コンピュートへの接続を設定するには、次のものが必要です。

設定

開始する前に、次のものが必要です。

クラスターへの接続を構成する

クラスターへの接続を構成するには、複数の方法があります。 Databricks Connect は、次の順序で構成プロパティを検索し、最初に見つかった構成を使用します。 詳細な構成情報については、「 Databricks Connect for Python の高度な使用法」を参照してください。

  1. DatabricksSession クラスの remote() メソッド

  2. Databricks 構成プロファイル

  3. DATABRICKS_CONFIG_PROFILE 環境変数

  4. 各構成プロパティの環境変数

  5. デフォルトという名前の Databricks 構成プロファイル

DatabricksSession クラスの remote() メソッド

このオプション ( Databricks personal アクセストークン認証 のみに適用される) では、ワークスペース インスタンス名、 Databricks personal アクセストークン、およびクラスターの ID を指定します。

DatabricksSession クラスは、いくつかの方法で初期化できます。

  • DatabricksSession.builder.remote()hosttokencluster_id の各フィールドを設定します。

  • Databricks SDK の Config クラスを使用します。

  • Databricks 構成プロファイルを cluster_id フィールドと共に指定します。

Databricks では、これらの接続プロパティをコードで指定する代わりに、このセクション全体で説明するように、環境変数または構成ファイルを使用してプロパティを構成することをお勧めします。 次のコード例では、提案された retrieve_* 関数の実装を提供して、ユーザーまたは他の構成ストア ( AWS Systems Manager パラメーター Store など) から必要なプロパティを取得することを前提としています。

これらの各アプローチのコードは次のとおりです。

# 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()
# 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()
# 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 構成プロファイル

このオプションでは、使用する Databricks cluster_id認証タイプ に必要なフィールド () およびその他のフィールドを含む Databricks 構成プロファイル を作成または特定します。

各認証タイプに必要な設定プロファイル フィールドは次のとおりです。

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を指定する必要はありません。

これらの各アプローチのコードは次のとおりです。

# 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()
# 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環境変数

このオプションでは、使用する Databricks cluster_id認証タイプ に必要なフィールド () およびその他のフィールドを含む Databricks 構成プロファイル を作成または特定します。

すでにクラスターの ID で DATABRICKS_CLUSTER_ID 環境変数を設定している場合は、 cluster_idを指定する必要はありません。

各認証タイプに必要な設定プロファイル フィールドは次のとおりです。

Databricksのユーザー名とパスワードを使用した基本認証のサポートは2024年7月10日に終了しました。詳しくは、「Databricksで管理するパスワードのサポート終了」を参照してください。

auth login コマンドの--configure-clusterを使用して、新規または既存の設定プロファイルに cluster_id フィールドを自動的に追加できます。詳細については、コマンド databricks auth login -h.

DATABRICKS_CONFIG_PROFILE環境変数をこの構成プロファイルの名前に設定します。次に、 DatabricksSession クラスを初期化します。

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

各構成プロパティの環境変数

このオプションでは、使用する Databricks 認証タイプに必要な DATABRICKS_CLUSTER_ID 環境変数とその他の環境変数を設定します。

各認証タイプに必要な環境変数は次のとおりです。

Databricksのユーザー名とパスワードを使用した基本認証のサポートは2024年7月10日に終了しました。詳しくは、「Databricksで管理するパスワードのサポート終了」を参照してください。

次に、 DatabricksSession クラスを初期化します。

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

DEFAULT という名前の Databricks 構成プロファイル

このオプションでは、使用する Databricks cluster_id認証タイプ に必要なフィールド () およびその他のフィールドを含む Databricks 構成プロファイル を作成または特定します。

すでにクラスターの ID で DATABRICKS_CLUSTER_ID 環境変数を設定している場合は、 cluster_idを指定する必要はありません。

各認証タイプに必要な設定プロファイル フィールドは次のとおりです。

Databricksのユーザー名とパスワードを使用した基本認証のサポートは2024年7月10日に終了しました。詳しくは、「Databricksで管理するパスワードのサポート終了」を参照してください。

この設定プロファイルに DEFAULTという名前を付けます。

auth login コマンドの --configure-cluster オプションを使用して、cluster_id フィールドを DEFAULT 構成プロファイルに自動的に追加できます。詳細については、コマンド databricks auth login -h.

次に、 DatabricksSession クラスを初期化します。

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

サーバレス コンピュートへの接続を構成する

プレビュー

この機能はパブリックプレビュー段階です。

Databricks Connect for Python は、サーバレス コンピュートへの接続に対応しています。 この機能を利用するには、サーバレスへの接続要件を満たす必要があります。 「要件」を参照してください。

重要

この機能には、次の制限があります。

サーバレス コンピュートへの接続は、次のいずれかの方法で設定できます。

  • ローカル環境変数 DATABRICKS_SERVERLESS_COMPUTE_IDautoに設定します。 この環境変数が設定されている場合、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接続の無効化

Databricks Connect (および基になる Spark 接続) サービスは、任意のクラスターで無効にすることができます。

Databricks Connect サービスを無効にするには、クラスターで次の Spark 構成 を設定します。

spark.databricks.service.server.enabled false