メインコンテンツまでスキップ

Databricks アセットバンドルを使用した Scala JAR の構築

この記事では、Databricks Asset Bundle を使用して Scala JAR をビルド、デプロイ、実行する方法について説明します。バンドルに関する情報については、Databricks アセットバンドルとはを参照してください。

Java JAR をビルドして Unity Catalog にアップロードする構成の例については、「 JAR ファイルを Unity Catalog にアップロードするバンドル」を参照してください。

必要条件

このチュートリアルでは、Databricks ワークスペースが次の要件を満たしている必要があります。

さらに、ローカル開発環境に以下がインストールされている必要があります。

ステップ 1: バンドルを作成する

まず、 bundle init コマンド と Scala プロジェクトバンドルテンプレートを使用してバンドルを作成します。

Scala JARバンドル テンプレートは、 JARを構築するバンドルを作成し、それを指定されたボリュームにアップロードし、サーバーレス コンピュートで実行するJARを含むSparkタスクを含むジョブを定義します。 テンプレート プロジェクトの Scala は、サンプル DataFrame に単純な変換を適用し、結果を出力する UDF を定義します。テンプレートのソースは、bundle-examples リポジトリにあります。

  1. ローカル開発マシンのターミナルウィンドウで次のコマンドを実行します。一部の必須フィールドの値を入力するように求められます。

    Bash
    databricks bundle init --template-dir contrib/templates/scala-job https://github.com/databricks/bundle-examples
  2. プロジェクトの名前として、「 my_scala_project」と入力します。これにより、このバンドルのルートディレクトリの名前が決まります。このルートディレクトリは、現在の作業ディレクトリ内に作成されます。

  3. ボリュームの作成先のパスには、バンドルのディレクトリを作成し、JARやその他のアーティファクトを格納するDatabricksにおけるUnity Catalogの ボリュームパスを指定します。 例えば、/Volumes/my-catalog/my-schema/bundle-volumes

注記

テンプレート プロジェクトはサーバーレス コンピュートを構成しますが、クラシック コンピュートを使用するように変更する場合、管理者は指定したボリュームJARパスをホワイトリストに登録する必要がある場合があります。 標準アクセス モード (以前の共有アクセス モード) でのコンピュートに関する許可リスト ライブラリと init スクリプトを参照してください。

ステップ 2: VM オプションを構成する

  1. build.sbtが配置されている IntelliJ の現在のディレクトリをインポートします。

  2. IntelliJ で Java 17 を選択します。 [ファイル] > [プロジェクト構造] > [SDK] に移動します。

  3. src/main/scala/com/examples/Main.scalaを開きます。

  4. VM オプションを追加するには、メインの構成に移動します。

    メイン編集

    VMオプシ�ョンを追加する

  5. VM オプションに以下を追加します。

    --add-opens=java.base/java.nio=ALL-UNNAMED
ヒント

あるいは、Visual Studio Code を使用している場合は、次のコードを sbt ビルド ファイルに追加します。

fork := true
javaOptions += "--add-opens=java.base/java.nio=ALL-UNNAMED"

次に、ターミナルからアプリケーションを実行します。

sbt run

ステップ 3: バンドルを探索する

テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルート ディレクトリに切り替えて、このディレクトリを IDE で開きます。このテンプレートは、sbt を使用して Scala ファイルをコンパイルおよびパッケージ化し、ローカル開発のために Databricks Connect と連携します。詳細については、生成されたプロジェクトの README.md を参照してください。

特に興味深いファイルは次のとおりです。

  • databricks.yml: このファイルは、バンドルのプログラム名を指定し、ジョブ定義への参照を含め、ターゲット ワークスペースに関する設定を指定します。
  • resources/my_scala_project.job.yml: このファイルは、ジョブの JAR タスクとクラスター設定を指定します。
  • src/: このディレクトリには、Scala プロジェクトのソースファイルが含まれています。
  • build.sbt: このファイルには、重要なビルド ライブラリと依存ライブラリの設定が含まれています。
  • README.md: このファイルには、これらの開始手順と、ローカルのビルド手順と設定が含まれています。

ステップ 4: プロジェクトのバンドル構成ファイルを検証する

次に、 bundle validate コマンドを使用して、バンドル設定が有効かどうかを確認します。

  1. ルート ディレクトリから、Databricks CLI bundle validate コマンドを実行します。他のチェックの中でも、構成ファイルで指定されたボリュームがワークスペースに存在することを確認します。

    Bash
    databricks bundle validate
  2. バンドル構成のサマリーが返された場合、検証は成功しています。エラーが返された場合は、エラーを修正してから、この手順を繰り返します。

この手順の後にバンドルに変更を加えた場合は、この手順を繰り返して、バンドル構成がまだ有効かどうかを確認します。

ステップ 5: ローカル プロジェクトをリモート ワークスペースにデプロイする

次に、 bundle deploy コマンドを使用して、バンドルをリモートの Databricks ワークスペースにデプロイします。この手順では、JARファイルを作成し、指定したボリュームにアップロードします。

  1. Databricks CLI bundle deploy コマンドを実行します。

    Bash
    databricks bundle deploy -t dev
  2. ローカルにビルドされた JAR ファイルがデプロイされたかどうかを確認するには、次のようにします。

    1. Databricks ワークスペースのサイドバーで、[ カタログ エクスプローラー ] をクリックします。
    2. バンドルの初期化時に指定したボリュームの宛先パスに移動します。JAR ファイルは、そのパス内の /my_scala_project/dev/<user-name>/.internal/フォルダに配置する必要があります。
  3. ジョブが作成されたかどうかを確認するには:

    1. Databricks ワークスペースのサイドバーで、[ ジョブとパイプライン] をクリックします。
    2. 必要に応じて、[ ジョブ ] と [自分が所有] フィルターを選択します。
    3. [dev <your-username>]my_scala_project をクリックします。
    4. 「タスク」 タブをクリックします。

    タスクは 1 つ、 main_task つあるべきです。

この手順の後にバンドルに変更を加えた場合は、検証とデプロイの手順を繰り返します。

ステップ 6: デプロイされたプロジェクトを実行する

最後に、Databricksbundle run コマンドを使用してジョブを実行します。

  1. ルートディレクトリから、 Databricks CLI bundle run コマンドを実行し、定義ファイル my_scala_project.job.ymlでジョブの名前を指定します。

    Bash
    databricks bundle run -t dev my_scala_project
  2. ターミナルに表示される Run URL の値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。

  3. Databricks ワークスペースで、タスクが正常に完了し、緑色のタイトル バーが表示されたら、 main_task タスクをクリックして結果を確認します。