Share via


Databricks Connect for Scala

Note

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

この記事では、Scala を IntelliJ IDEAScala プラグインと使用することで、Databricks Connect の利用をすぐに開始する方法について説明します。

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

チュートリアル

このチュートリアルをスキップし、代わりに別の IDE を使用するには、「次の手順」を参照してください。

必要条件

このチュートリアルを完了するには、次の要件を満たす必要があります。

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

  • クラスター ID を使用できる必要があります。 クラスター ID を取得するには、ワークスペースで、サイドバーの [コンピューティング] をクリックしてから、クラスターの名前をクリックします。 Web ブラウザーのアドレス バーで、URL 内の clustersconfiguration の間の文字列をコピーします。

  • 開発マシンに Java Development Kit (JDK) がインストールされている。 Databricks は、使用する JDK インストールのバージョンを Azure Databricks クラスターの JDK バージョンと一致させることを推奨しています。 次の表は、サポートされている各 Databricks Runtime 用の JDK バージョンを示しています。

    Databricks Runtime のバージョン JDK バージョン
    13.3 LTS - 15.0、
    13.3 ML LTS - 15.0 ML
    JDK 8

    Note

    JDK がインストールされていない場合、または開発用マシンに複数の JDK がインストールされている場合は、後の手順 1 で特定の JDK をインストールまたは選択できます。 クラスターの JDK バージョンより下または上の JDK インストールを選択すると、予期しない結果が発生したり、コードがまったく実行されない可能性があります。

  • IntelliJ IDEA がインストールされている。 このチュートリアルは、IntelliJ IDEA Community Edition 2023.3.6 でテストされました。 別のバージョンまたはエディションの IntelliJ IDEA を使用する場合、次の手順は異なる場合があります。

  • IntelliJ IDEA 用の Scala プラグインがインストールされている。。

手順 1: Azure Databricks 認証を構成する

このチュートリアルでは、Azure Databricks OAuth ユーザー対マシン (U2M) 認証と Azure Databricks 構成プロファイルを使用しており、Azure Databricks ワークスペースを使用して認証します。 代わりに別の認証の種類を使うには、「接続プロパティの構成」をご覧ください。

OAuth U2M 認証を構成するには、次のように Databricks CLI が必要です。

  1. Databricks CLI がまだインストールされていない場合は、次のようにしてインストールします。

    Linux、MacOS

    Homebrew を使用し、次の 2 つのコマンドを実行して Databricks CLI をインストールします。

    brew tap databricks/tap
    brew install databricks
    

    Windows

    wingetChocolatey または Linux 用 Windows サブシステム (WSL) を使用して、Databricks CLI をインストールできます。 winget、Chocolatey、WSL を使えない場合は、この手順をスキップし、代わりにコマンド プロンプトまたは PowerShell を使ってソースから Databricks CLI をインストールする必要があります。

    Note

    Chocolatey を使用した Databricks CLI のインストールは、試験段階です。

    winget を使用して Databricks CLI をインストールするには、次の 2 つのコマンドを実行し、コマンド プロンプトを再起動してください。

    winget search databricks
    winget install Databricks.DatabricksCLI
    

    Chocolatey を使用して Databricks CLI をインストールするには、次のコマンドを実行します。

    choco install databricks-cli
    

    WSL を使って Databricks CLI をインストールするには、次のようにします。

    1. WSL を使用して curlzip をインストールします。 詳細については、お使いのオペレーティング システムのドキュメントを参照してください。

    2. WSL を使用して、次のコマンドを実行して Databricks CLI をインストールしてください。

      curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
      
  2. 次のコマンドを実行して、Databricks CLI がインストールされていることを確認します。これにより、インストールされている Databricks CLI の現在のバージョンが表示されます。 このバージョンは 0.205.0 以降である必要があります。

    databricks -v
    

    Note

    databricks を実行しても command not found: databricks などの エラーが発生する場合、または databricks -v を実行するとバージョン番号 0.18 以下が表示される場合は、お使いのマシンで正しいバージョンの Databricks CLI 実行可能ファイルが見つからないことを意味します。 これを修正するには、「CLI のインストールを確認する」を参照してください。

次のように OAuth U2M 認証を開始します。

  1. Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。

    次のコマンド内では、<workspace-url> を Azure Databricks ワークスペース単位の URL (例: https://adb-1234567890123456.7.azuredatabricks.net) に置き換えます。

    databricks auth login --configure-cluster --host <workspace-url>
    
  2. Databricks CLI では、入力した情報を Azure Databricks 構成プロファイルとして保存するように求められます。 Enter キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイル名を入力します。 同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。

    既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプト内で、Databricks CLI を使用してコマンド databricks auth profiles を実行します。 特定のプロファイルの既存の設定を表示するには、コマンド databricks auth env --profile <profile-name> を実行します。

  3. Web ブラウザーで、画面の指示に従って Azure Databricks ワークスペースにログインします。

  4. ターミナルまたはコマンド プロンプトに表示される使用可能なクラスターのリストで、上下の方向キーを使ってワークスペース内のターゲット Azure Databricks クラスターを選び、Enter キーを押します。 クラスターの表示名の任意の部分を入力して、使用可能なクラスターの一覧をフィルター処理することもできます。

  5. プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    同じ --host 値を持つ複数のプロファイルがある場合は、Databricks CLI が正しく一致する OAuth トークン情報を見つけるのに役立つ --host-p のオプションを一緒に指定することが必要になる場合があります。

手順 2: プロジェクトを作成する

  1. IntelliJ IDEA を開始します。

  2. メイン メニューで、[ファイル]>[新規]>[プロジェクト] の順にクリックします。

  3. プロジェクトにわかりやすい名前を付けてください。

  4. [場所] では、フォルダー アイコンをクリックし、画面上の指示を完了して、新しい Scala プロジェクトへのパスを指定してください。

  5. [言語] では、[Scala] をクリックしてください。

  6. [ビルド システム] では、[sbt] をクリックしてください。

  7. [JDK] ドロップダウン リストで、クラスターの JDK バージョンと一致する開発マシンの JDK の既存のインストールを選択するか、[JDK のダウンロード] を選択し、画面上の指示に従って、クラスターの JDK のバージョンに一致する JDK をダウンロードしてください。

    Note

    クラスターの JDK バージョンより上または下の JDK インストールを選択すると、予期しない結果が発生したり、コードがまったく実行されないおそれがあります。

  8. [sbt] ドロップダウン リストで、最新バージョンを選択してください。

  9. [Scala] ドロップダウン リストで、クラスターの Scala バージョンと一致する Scala のバージョンを選択します。 次の表は、サポートされている各 Databricks Runtime 用の Scala バージョンを示しています。

    Databricks Runtime のバージョン Scala バージョン
    13.3 LTS - 15.0、
    13.3 ML LTS - 15.0 ML
    2.12.15

    Note

    クラスターの Scala バージョンより下または上の Scala バージョンを選択すると、予期しない結果が発生したり、コードがまったく実行されない可能性があります。

  10. [Scala] の横にある [ソースのダウンロード] ボックスにチェックが入っていることを確認します。

  11. [パッケージ プレフィックス] では、プロジェクトのソースのパッケージ プレフィックス値 (例: org.example.application) を入力します。

  12. [サンプル コードの追加] ボックスにチェックが入っていることを確認してください。

  13. Create をクリックしてください。

IntelliJ IDEA プロジェクトを作成する

手順 3: Databricks Connect パッケージを追加する

  1. 新しい Scala プロジェクトを開いた状態で、[プロジェクト] ツール ウィンドウ ([表示] > [ツール ウィンドウ] > [プロジェクト]) で、build.sbt という名前のファイルを、project-name> target で開きます。

  2. 次のコードを build.sbt ファイルの末尾に追加します。これは、Scala 用の Databricks Connect ライブラリの特定のバージョンに対するプロジェクトの依存関係を宣言します。

    libraryDependencies += "com.databricks" % "databricks-connect" % "14.3.1"
    

    14.3.1 を、クラスターの Databricks Runtime バージョンと一致する Databricks Connect ライブラリのバージョンに置き換えてください。 Databricks Connect ライブラリのバージョン番号は、Maven 中央リポジトリで確認できます。

  3. [sbt の変更の読み込み] 通知アイコンをクリックして、Scala プロジェクトを新しいライブラリの場所と依存関係で更新してください。

  4. IDE の下部にある sbt 進行状況インジケーターが消えるまで待ちます。 sbt 読み込みプロセスの完了には、数分かかる場合があります。

Databricks Connect パッケージをインストールする

手順 4: コードを追加する

  1. [プロジェクト] ツール ウィンドウで、project-name> src > main > scala で、Main.scala という名前のファイルを開きます。

  2. 構成プロファイルの名前に応じて、ファイル内の既存のコードを次のコードで置き換え、ファイルを保存します。

    手順 1 の構成プロファイルの名前が DEFAULT の場合は、ファイル内の既存のコードを次のコードで置き換え、ファイルを保存します。

    package org.example.application
    
    import com.databricks.connect.DatabricksSession
    import org.apache.spark.sql.SparkSession
    
    object Main {
      def main(args: Array[String]): Unit = {
        val spark = DatabricksSession.builder().remote().getOrCreate()
        val df = spark.read.table("samples.nyctaxi.trips")
        df.limit(5).show()
      }
    }
    

    手順 1 の構成プロファイルの名前が DEFAULT でない場合は、代わりにファイル内の既存のコードを次のコードで置き換えます。 プレースホルダー <profile-name> を手順 1 の構成プロファイルの名前に置き換えて、ファイルを保存します。

    package org.example.application
    
    import com.databricks.connect.DatabricksSession
    import com.databricks.sdk.core.DatabricksConfig
    import org.apache.spark.sql.SparkSession
    
    object Main {
      def main(args: Array[String]): Unit = {
        val config = new DatabricksConfig().setProfile("<profile-name>")
        val spark = DatabricksSession.builder().sdkConfig(config).getOrCreate()
        val df = spark.read.table("samples.nyctaxi.trips")
        df.limit(5).show()
      }
    }
    

手順 5: コードを実行する

  1. リモートの Azure Databricks ワークスペースでターゲット クラスターを開始します。
  2. クラスターが起動したら、メイン メニューで [実行] > [‘Main’ の実行] の順にクリックします。
  3. [実行] ツール ウィンドウ ([表示] > [ツール ウィンドウ] > [実行]) の [メイン] タブに、samples.nyctaxi.trips テーブルの最初の 5 行が表示されます。

手順 6: コードをデバッグする

  1. ターゲット クラスターがまだ実行中の状態で、前述のコードで、df.limit(5).show() の横にある余白をクリックしてブレークポイントを設定します。
  2. メイン メニューで、[実行]>[メインのデバッグ] の順にクリックします。
  3. [デバッグ] ツール ウィンドウ ([表示] > [ツール ウィンドウ] > [デバッグ]) の [コンソール] タブで、計算ツール ([式の評価]) アイコンをクリックします。
  4. df.schema を入力し、[評価] をクリックして DataFrame のスキーマを表示します。
  5. [デバッグ] ツール ウィンドウのサイドバーで、緑色の矢印 ([プログラムの再開]) アイコンをクリックします。
  6. [コンソール] ペインに、samples.nyctaxi.trips テーブルの最初の 5 行が表示されます。

IntelliJ IDEA プロジェクトをデバッグする

次のステップ

Databricks Connect の詳細については、次のような記事を参照してください。