Databricks Connect for Scala をインストールする

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

この記事では、Databricks Connect for Scala をインストールする方法について説明します。 「Databricks Connect とは」を参照してください。この記事の Python バージョンについては、「 Databricks Connect for Python のインストール」を参照してください。

要件

  • ターゲットの Databricks ワークスペースとクラスターは、 Databricks Connect のクラスター構成の要件を満たしている必要があります。

  • 開発マシンにインストールされている Java 開発キット (JDK)。 Databricks では、使用する JDK インストールのバージョンを Databricks クラスターの JDK バージョンと一致させることをお勧めします。 クラスターの JDK バージョンを確認するには、クラスターの Databricks Runtime リリースノートの「システム環境」セクションを参照してください。 たとえば、Zulu 8.70.0.23-CA-linux64 は JDK 8 に対応します。 リリースノートDatabricks Runtimeバージョンと互換性を参照してください。

  • 開発マシンにインストールされている Scala。 Databricks では、使用する Scala インストールのバージョンを Databricks クラスターの Scala バージョンと一致させることをお勧めします。 クラスターの Scala バージョンを確認するには、クラスターの Databricks Runtime リリースノートの「システム環境」セクションを参照してください。 リリースノートDatabricks Runtimeバージョンと互換性を参照してください。

  • 開発マシン上の Scala ビルド ツール ( sbtなど)。

クライアントのセットアップ

Databricks Connect の要件を満たしたら、次の手順を実行して Databricks Connect クライアントを設定します。

手順 1: Databricks Connect クライアントへの参照を追加する

  1. sbtの場合は build.sbt、Maven の場合は pom.xml、Gradle の場合は build.gradle など、Scala プロジェクトのビルド ファイルで、Databricks Connect クライアントに次の参照を追加します。

    libraryDependencies += "com.databricks" % "databricks-connect" % "14.0.0"
    
    <dependency>
      <groupId>com.databricks</groupId>
      <artifactId>databricks-connect</artifactId>
      <version>14.0.0</version>
    </dependency>
    
    implementation 'com.databricks.databricks-connect:14.0.0'
    
  2. 14.0.0、クラスター上の Databricks Runtime バージョンと一致するバージョンの Databricks Connect ライブラリに置き換えます。 Databricks Connect ライブラリのバージョン番号は、 Maven の中央リポジトリで確認できます。

ステップ 2: 接続プロパティを構成する

このセクションでは、Databricks Connect とリモート Databricks クラスター間の接続を確立するためのプロパティを構成します。 これらのプロパティには、クラスターで Databricks Connect を認証するための設定が含まれます。

Databricks Connect for Databricks Runtime 13.3 LTS 以降の場合、Scala の場合、Databricks Connect には Databricks SDK for Java が含まれています。 この SDK は、 Databricks クライアント統合認証 標準を実装しており、認証に対する統合された一貫性のあるアーキテクチャおよびプログラムによるアプローチです。 このアプローチにより、Databricks での認証の設定と自動化がより一元化され、予測可能になります。 これにより、Databricks 認証を一度構成すると、認証構成をさらに変更することなく、その構成を複数の Databricks ツールや SDK で使用できます。

  1. 次の構成プロパティを収集します。

  2. コード内で接続を構成します。 Databricks Connect は、構成プロパティが見つかるまで次の順序で検索します。 それらが見つかると、残りのオプションの検索を停止します。 各オプションの詳細は、次の表の後に表示されます。

    構成プロパティー・オプション

    適用対象

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

    Databricks personal アクセストークン認証のみ

    1. Databricks 構成プロファイル

    すべての Databricks 認証の種類

    1. SPARK_REMOTE 環境変数

    Databricks personal アクセストークン認証のみ

    1. DATABRICKS_CONFIG_PROFILE 環境変数

    すべての Databricks 認証の種類

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

    すべての Databricks 認証の種類

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

    すべての Databricks 認証の種類

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

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

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

      • DatabricksSession.builderhosttokenclusterId フィールドを設定します。

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

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

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

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

      // 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()
      
    2. Databricks 構成プロファイル

      このオプションでは、フィールドcluster_id と、使用するサポートされている Databricks 認証タイプ に必要なその他のフィールドを含む Databricks 構成プロファイル を作成または識別します。

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

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

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

      • 構成プロファイルに cluster_id フィールドを含め、構成プロファイルの名前だけを指定します。

      • 構成プロファイル名と clusterId フィールドを指定します。

      DATABRICKS_CLUSTER_ID 環境変数にクラスターの 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()
      
    3. SPARK_REMOTE 環境変数

      このオプション (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()
      

      環境変数を設定するには、ご利用になっているオペレーティングシステムのドキュメントを参照してください。

    4. DATABRICKS_CONFIG_PROFILE 環境変数

      このオプションでは、フィールドcluster_id と、使用するサポートされている Databricks 認証タイプ に必要なその他のフィールドを含む Databricks 構成プロファイル を作成または識別します。

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

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

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

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

      環境変数を設定するには、ご利用になっているオペレーティングシステムのドキュメントを参照してください。

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

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

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

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

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

      環境変数を設定するには、ご利用になっているオペレーティングシステムのドキュメントを参照してください。

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

      このオプションでは、フィールドcluster_id と、使用するサポートされている Databricks 認証タイプ に必要なその他のフィールドを含む Databricks 構成プロファイル を作成または識別します。

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

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

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

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

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