Databricks Connect for Scala をインストールする
Note
この記事では、Databricks Runtime 13.3 LTS 以降用の Databricks Connect について説明します。
この記事では、Databricks Connect for Scala をインストールする方法について説明します。 「Databricks Connect とは」を参照してください。 この記事の Python バージョンについては、「Databricks Connect for Python をインストールする」を参照してください。
必要条件
- ターゲットの Azure Databricks のワークスペースとクラスターは、Databricks Connect のクラスター構成要件を満たしている必要があります。
- 開発マシンに Java Development Kit (JDK) がインストールされている。 Databricks は、使用する JDK インストールのバージョンを Azure Databricks クラスターの JDK バージョンと一致させることを推奨しています。 お使いのクラスターの JDK のバージョンを確認するには、クラスターの Databricks Runtime リリース ノートの「システム環境」セクションを参照してください。 たとえば、
Zulu 8.70.0.23-CA-linux64
は JDK 8 に対応します。 「Databricks Runtime リリース ノートのバージョンと互換性」を参照してください。 - 開発用マシンにインストールされている Scala。 Databricks は、使用する Scala インストールのバージョンを Azure Databricks クラスターの Scala バージョンと一致させることを推奨しています。 お使いのクラスターの Scala のバージョンを確認するには、クラスターの Databricks Runtime リリース ノートの「システム環境」セクションを参照してください。 「Databricks Runtime リリース ノートのバージョンと互換性」を参照してください。
- 開発用マシン上の Scala ビルド ツール (
sbt
など)。
クライアントをセットアップする
Databricks Connect の要件を満たしたら、次の手順を実行して Databricks Connect クライアントを設定します。
手順 1: Databricks Connect クライアントへの参照を追加する
Scala プロジェクトのビルド ファイル (
sbt
のbuild.sbt
、Maven のpom.xml
、Gradle のbuild.gradle
など) で、Databricks Connect クライアントに次の参照を追加してください。Sbt
libraryDependencies += "com.databricks" % "databricks-connect" % "14.0.0"
Maven
<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-connect</artifactId> <version>14.0.0</version> </dependency>
Gradle
implementation 'com.databricks.databricks-connect:14.0.0'
14.0.0
を、クラスターの Databricks Runtime バージョンと一致する Databricks Connect ライブラリのバージョンに置き換えてください。 Databricks Connect ライブラリのバージョン番号は、Maven 中央リポジトリで確認できます。
手順 2: 接続プロパティの構成
このセクションでは、Databricks Connect とリモート Azure Databricks クラスターの間の接続を確立するようにプロパティを構成します。 これらのプロパティには、クラスターで Databricks Connect を認証するための設定が含まれます。
Databricks Connect for Databricks Runtime 13.3 LTS 以降で、Scala の場合 Databricks Connect に Databricks SDK for Java が含まれています。 この SDK は、Databricks クライアント統合認証標準を実装しています。これは、統合されていて一貫性がある、アーキテクチャとプログラムによる認証アプローチです。 このアプローチは、Azure Databricks を使用した認証の設定と自動化を、より一元的で予測可能なものにします。 これにより、Azure Databricks 認証を一度構成すれば、それ以上認証構成を変更しなくても、複数の Azure Databricks ツールおよび SDK でその構成を使用できます。
Note
OAuth ユーザー対マシン (U2M) 認証は、Databricks SDK for Java 0.18.0 以降でサポートされています。 OAuth U2M 認証を使用するには、コード プロジェクトのインストールされている Databricks SDK for Java のバージョンを 0.18.0 以上に更新する必要がある場合があります。 「Databricks SDK for Java を使ってみる」を参照してください。
OAuth U2M 認証の場合は、Scala コードを実行する前に Databricks CLI を使用して認証する必要があります。 「チュートリアル」を参照してください。
OAuth マシン間 (M2M) 認証は、Databricks SDK for Java 0.17.0 以降でサポートされています。 OAuth U2M 認証を使用するには、コード プロジェクトのインストールされている Databricks SDK for Java のバージョンを 0.17.0 以上に更新する必要がある場合があります。 「Databricks SDK for Java を使ってみる」を参照してください。
Databricks SDK for Java では、まだ Azure マネージド ID 認証が実装されていません。
次の構成プロパティを収集します。
- Azure Databricks ワークスペースのインスタンス名。 これは、クラスターのサーバー ホスト名の値と同じです。「Azure Databricks コンピューティング リソースの接続の詳細を取得する」を参照してください。
- クラスターの ID。 クラスター ID は URL から取得できます。 「クラスター URL と ID」を参照してください。
- サポート対象の Databricks 認証の種類に必要なその他のプロパティ。 これらのプロパティについては、このセクション全体で説明します。
コード内で接続を構成します。 Databricks Connect は、見つかるまで構成プロパティを次の順序で検索します。 見つかると、残りのオプションの検索を停止します。 各オプションの詳細は、次の表の後に表示されます。
構成プロパティ オプション 適用対象 1. DatabricksSession
クラスのremote()
メソッドAzure Databricks 個人用アクセス トークン認証のみ 2.Azure Databricks の構成プロファイル すべての Azure Databricks 認証の種類 3. SPARK_REMOTE
環境変数Azure Databricks 個人用アクセス トークン認証のみ 4. DATABRICKS_CONFIG_PROFILE
環境変数すべての Azure Databricks 認証の種類 5.各構成プロパティの環境変数 すべての Azure Databricks 認証の種類 6. DEFAULT
という名前の Azure Databricks の構成プロファイルすべての Azure Databricks 認証の種類 DatabricksSession
クラスのremote()
メソッドAzure Databricks 個人用アクセス トークン認証にのみ適用されるこのオプション用に、ワークスペース インスタンス名、Azure Databricks 個人用アクセス トークン、およびクラスターの ID を指定します。
次のように、いくつかの方法で
DatabricksSession
クラスを初期化できます。DatabricksSession.builder
で、host
、token
、clusterId
フィールドを設定します。- Databricks SDK の
Config
クラスを使用します。 clusterId
フィールドと共に Databricks 構成プロファイルを指定します。
Databricks では、これらの接続プロパティをコード内で直接指定することはお勧めしません。 その代わりに、Databricks では、このセクション全体で説明されているように、環境変数または構成ファイルを使用してプロパティを構成することをお勧めします。 以下のコード例では、ユーザーまたはその他の構成ストア (Azure KeyVault など) から必要なプロパティを取得するために、提案された
retrieve*
関数の実装を自分で提供することが想定されています。これらの各方法のコードは次のとおりです。
// 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 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 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 構成プロファイルを作成または指定してください。各認証タイプに必要な構成プロファイル フィールドは次のとおりです。
- Azure Databricks 個人用アクセス トークン認証の場合:
host
とtoken
。 - OAuth マシン間 (M2M) 認証の場合 (サポートされている場合):
host
、client_id
、client_secret
。 - OAuth ユーザー対マシン (U2M) 認証の場合 (サポートされている場合):
host
。 - Microsoft Entra ID (旧称 Azure Active Directory) サービス プリンシパル認証の場合:
host
、azure_tenant_id
、azure_client_id
、azure_client_secret
、場合によってはazure_workspace_resource_id
。 - Azure CLI 認証の場合:
host
。 - Azure マネージド ID 認証の場合 (サポートされている場合):
host
、azure_use_msi
、azure_client_id
、場合によってはazure_workspace_resource_id
。
次に、
DatabricksConfig
クラスを使用して、この構成プロファイルの名前を設定します。次のように、いくつかの方法で
cluster_id
を指定できます。- 構成プロファイルに
cluster_id
フィールドを含め、その後構成プロファイルの名前のみを指定します。 clusterId
フィールドと共に構成プロファイル名を指定します。
クラスターの ID を使用して
DATABRICKS_CLUSTER_ID
環境変数を既に設定している場合は、cluster_id
またはclusterId
フィールドを指定する必要はありません。これらの各方法のコードは次のとおりです。
// 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 clusterId field. // In this example, retrieveClusterId() assumes some custom implementation that // you provide to get the cluster ID from the user or from some other // configuration store: 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 個人用アクセス トークン認証の場合:
SPARK_REMOTE
環境変数Azure Databricks 個人用アクセス トークン認証にのみ適用されるこのオプション用に、
SPARK_REMOTE
環境変数を次の文字列に設定し、プレースホルダーを適切な値に置き換えます。sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
次に、
DatabricksSession
クラスを次のように初期化します。import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
環境変数を設定するには、オペレーティング システムのドキュメントを参照してください。
DATABRICKS_CONFIG_PROFILE
環境変数このオプションでは、
cluster_id
フィールドおよび、使用するサポート対象の Databricks 認証の種類に必要なその他のフィールドが含まれた Azure Databricks 構成プロファイルを作成または指定してください。クラスターの ID を使用して
DATABRICKS_CLUSTER_ID
環境変数を既に設定している場合は、cluster_id
を指定する必要はありません。各認証タイプに必要な構成プロファイル フィールドは次のとおりです。
- Azure Databricks 個人用アクセス トークン認証の場合:
host
とtoken
。 - OAuth マシン間 (M2M) 認証の場合 (サポートされている場合):
host
、client_id
、client_secret
。 - OAuth ユーザー対マシン (U2M) 認証の場合 (サポートされている場合):
host
。 - Microsoft Entra ID (旧称 Azure Active Directory) サービス プリンシパル認証の場合:
host
、azure_tenant_id
、azure_client_id
、azure_client_secret
、場合によってはazure_workspace_resource_id
。 - Azure CLI 認証の場合:
host
。 - Azure マネージド ID 認証の場合 (サポートされている場合):
host
、azure_use_msi
、azure_client_id
、場合によってはazure_workspace_resource_id
。
次に、
DATABRICKS_CONFIG_PROFILE
環境変数をこの構成プロファイルの名前に設定します。 次に、DatabricksSession
クラスを次のように初期化します。import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
環境変数を設定するには、オペレーティング システムのドキュメントを参照してください。
- Azure Databricks 個人用アクセス トークン認証の場合:
各構成プロパティの環境変数
このオプションでは、
DATABRICKS_CLUSTER_ID
環境変数と、使用するサポート対象のDatabricks 認証の種類に必要なその他の環境変数を設定します。各認証タイプに必要な環境変数は次のとおりです。
- Azure Databricks 個人用アクセス トークン認証の場合:
DATABRICKS_HOST
とDATABRICKS_TOKEN
。 - OAuth マシン間 (M2M) 認証の場合 (サポートされている場合):
DATABRICKS_HOST
、DATABRICKS_CLIENT_ID
、DATABRICKS_CLIENT_SECRET
。 - OAuth ユーザー対マシン (U2M) 認証の場合 (サポートされている場合):
DATABRICKS_HOST
。 - Microsoft Entra ID (旧称 Azure Active Directory) サービス プリンシパル認証の場合:
DATABRICKS_HOST
、ARM_TENANT_ID
、ARM_CLIENT_ID
、ARM_CLIENT_SECRET
、場合によってはDATABRICKS_AZURE_RESOURCE_ID
。 - Azure CLI 認証の場合:
DATABRICKS_HOST
。 - Azure マネージド ID 認証の場合 (サポートされている場合):
DATABRICKS_HOST
、ARM_USE_MSI
、ARM_CLIENT_ID
、場合によってはDATABRICKS_AZURE_RESOURCE_ID
。
次に、
DatabricksSession
クラスを次のように初期化します。import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
環境変数を設定するには、オペレーティング システムのドキュメントを参照してください。
- Azure Databricks 個人用アクセス トークン認証の場合:
DEFAULT
という名前の Azure Databricks の構成プロファイルこのオプションでは、
cluster_id
フィールドおよび、使用するサポート対象の Databricks 認証の種類に必要なその他のフィールドが含まれた Azure Databricks 構成プロファイルを作成または指定してください。クラスターの ID を使用して
DATABRICKS_CLUSTER_ID
環境変数を既に設定している場合は、cluster_id
を指定する必要はありません。各認証タイプに必要な構成プロファイル フィールドは次のとおりです。
- Azure Databricks 個人用アクセス トークン認証の場合:
host
とtoken
。 - OAuth マシン間 (M2M) 認証の場合 (サポートされている場合):
host
、client_id
、client_secret
。 - OAuth ユーザー対マシン (U2M) 認証の場合 (サポートされている場合):
host
。 - Microsoft Entra ID (旧称 Azure Active Directory) サービス プリンシパル認証の場合:
host
、azure_tenant_id
、azure_client_id
、azure_client_secret
、場合によってはazure_workspace_resource_id
。 - Azure CLI 認証の場合:
host
。 - Azure マネージド ID 認証の場合 (サポートされている場合):
host
、azure_use_msi
、azure_client_id
、場合によってはazure_workspace_resource_id
。
この構成プロファイルに
DEFAULT
という名前を付けます。次に、
DatabricksSession
クラスを次のように初期化します。scala import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
- Azure Databricks 個人用アクセス トークン認証の場合: