次の方法で共有


Databricks Connect のコンピューティング構成

Note

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

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

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

要件

Databricks コンピューティングへの接続を構成するには、次が必要です。

セットアップ

インストールを開始するには、次の条件を満たしている必要があります。

Note

  • OAuth ユーザー対マシン (U2M) 認証は、Databricks SDK for Python 0.19.0 以降でサポートされています。 OAuth U2M 認証を使用するように、コード プロジェクトにインストールされている Databricks SDK for Python のバージョンを 0.19.0 以上に更新します。 「Databricks SDK for Python を使ってみる」を参照してください。

    OAuth U2M 認証の場合は、Python コードを実行する前に Databricks CLI を使用して認証する必要があります。 「チュートリアル」を参照してください。

  • OAuth マシン間 (M2M) 認証 OAuth マシン間 (M2M) 認証は、Databricks SDK for Python 0.18.0 以降でサポートされています。 OAuth M2M 認証を使用するように、コード プロジェクトにインストールされている Databricks SDK for Python のバージョンを 0.18.0 以上に更新します。 「Databricks SDK for Python を使ってみる」を参照してください。

  • Databricks SDK for Python では、まだ Azure マネージド ID 認証が実装されていません。

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

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

  1. DatabricksSession クラスの remote() メソッド
  2. Databricks の構成プロファイル
  3. DATABRICKS_CONFIG_PROFILE 環境変数
  4. 各構成プロパティの環境変数
  5. DEFAULT という名前の Databricks 構成プロファイル

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

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

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

  • DatabricksSession.builder.remote() で、hosttokencluster_id フィールドを設定します。
  • Databricks SDK の Config クラスを使用します。
  • cluster_id フィールドと共に Databricks 構成プロファイルを指定します。

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

これらの各方法のコードは次のとおりです。

Python

# 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()

Scala

// 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

# 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()

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 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

# 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()

Scala

// 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()

Azure Databricks の構成プロファイル

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

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

次に、構成クラスを使用して、この構成プロファイルの名前を設定します。

cluster_idは、いくつかの方法で指定できます。

  • 構成プロファイルに cluster_id フィールドを含め、その後構成プロファイルの名前のみを指定します。
  • cluster_id フィールドと共に構成プロファイル名を指定します。

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

これらの各方法のコードは次のとおりです。

Python

# 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()

Scala

// 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

# 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()

Scala

// 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 認証の種類に必要なその他のフィールドが含まれた Azure Databricks 構成プロファイルを作成または指定します。

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

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

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

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

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

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

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

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

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

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

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

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

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

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

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

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

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

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

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()

Note

サーバーレス コンピューティング セッションは、非アクティブ状態が 10 分続くとタイムアウトになります。 その後、 getOrCreate() を使用してサーバーレス コンピューティングに接続する新しい Spark セッションを作成する必要があります。

Databricks への接続の検証

環境、既定の資格情報、コンピューティングへの接続が Databricks Connect 用に正しく設定されていることを検証するには、databricks-connect test コマンドを実行します。セットアップで非互換性が検出されると、このコマンドは失敗し、ゼロ以外の終了コードと対応するエラー メッセージが表示されます。

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