Databricks アセットバンドルを使用した Scala JAR の構築
この記事では、Databricks Asset Bundle を使用して Scala JAR をビルド、デプロイ、実行する方法について説明します。バンドルに関する情報については、Databricks アセットバンドルとはを参照してください。
Java JAR をビルドして Unity Catalog にアップロードする構成の例については、「 JAR ファイルを Unity Catalog にアップロードするバンドル」を参照してください。
必要条件
- Databricks CLI バージョン 0.218.0 以降で、認証が構成されています。インストールされている Databricks CLI のバージョンを確認するには、コマンド
databricks -v
を実行します。Databricks CLI をインストールするには、Databricks CLI のインストールまたは更新を参照してください。認証を構成するには、ワークスペースへのアクセスを構成するを参照してください。 - Unity CatalogDatabricksビルドアーティファクトを保存する に ボリュームと、指定したボリュームパスにJAR をアップロードするためのアクセス許可が必要です。「ボリュームの作成と管理」を参照してください。
ステップ 1: バンドルを作成する
まず、 bundle init コマンド と Scala プロジェクトバンドルテンプレートを使用してバンドルを作成します。Scala JARバンドル・テンプレートは、JARをビルドするバンドルを作成し、それを指定されたボリュームにアップロードし、指定されたクラスターで実行されるJarを持つSparkタスクを持つジョブを定義します。テンプレート プロジェクトの Scala は、サンプル DataFrame に単純な変換を適用して結果を出力する UDF を定義します。テンプレートのソースは bundle-examples リポジトリにあります。
-
ローカル開発マシンのターミナルウィンドウで次のコマンドを実行します。一部の必須フィールドの値を入力するように求められます。
Bashdatabricks bundle init --template-dir contrib/templates/scala-job https://github.com/databricks/bundle-examples
-
プロジェクトの名前として、「
my_scala_project
」と入力します。これにより、このバンドルのルートディレクトリの名前が決まります。このルートディレクトリは、現在の作業ディレクトリ内に作成されます。 -
ボリュームの作成先のパスには、バンドルのディレクトリを作成し、JARやその他のアーティファクトを格納するDatabricksにおけるUnity Catalogの ボリュームパスを指定します。 例えば、
/Volumes/my-catalog/my-schema/bundle-volumes
。
ワークスペースの権限によっては、指定したボリューム JAR パスを管理者が許可リストに登録することが必要な場合があります。標準アクセスモード (旧称 共有アクセスモード) のコンピュートにおけるライブラリと initスクリプトの許可リストを参照してください。
ステップ 2: バンドルを探索する
テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルート ディレクトリに切り替え、このディレクトリを任意の IDE で開きます。特に関心のあるファイルには、次のものがあります。
databricks.yml
: このファイルは、バンドルのプログラム名を指定し、ジョブ定義への参照を含め、ターゲット ワークスペースに関する設定を指定します。resources/my_scala_project.job.yml
: このファイルは、ジョブの JAR タスクとクラスター設定を指定します。src/
: このディレクトリには、Scala プロジェクトのソースファイルが含まれています。build.sbt
: このファイルには、重要なビルド ライブラリと依存ライブラリの設定が含まれています。README.md
: このファイルには、これらの開始手順と、ローカルのビルド手順と設定が含まれています。
ステップ 3: プロジェクトのバンドル設定ファイルを検証する
次に、 bundle validate コマンドを使用して、バンドル設定が有効かどうかを確認します。
-
ルート ディレクトリから、Databricks CLI
bundle validate
コマンドを実行します。他のチェックの中でも、構成ファイルで指定されたボリュームがワークスペースに存在することを確認します。Bashdatabricks bundle validate
-
バンドル構成のサマリーが返された場合、検証は成功しています。エラーが返された場合は、エラーを修正してから、この手順を繰り返します。
この手順の後にバンドルに変更を加えた場合は、この手順を繰り返して、バンドル構成がまだ有効かどうかを確認します。
手順 4: ローカル プロジェクトをリモート ワークスペースにデプロイする
次に、 bundle deploy コマンドを使用して、バンドルをリモートの Databricks ワークスペースにデプロイします。この手順では、JARファイルを作成し、指定したボリュームにアップロードします。
-
Databricks CLI
bundle deploy
コマンドを実行します。Bashdatabricks bundle deploy -t dev
-
ローカルにビルドされた JAR ファイルがデプロイされたかどうかを確認するには、次のようにします。
- Databricks ワークスペースのサイドバーで、[ カタログ エクスプローラー ] をクリックします。
- バンドルの初期化時に指定したボリュームの宛先パスに移動します。JAR ファイルは、そのパス内の
/my_scala_project/dev/<user-name>/.internal/
フォルダに配置する必要があります。
-
ジョブが作成されたかどうかを確認するには:
- Databricks ワークスペースのサイドバーで、 [ワークフロー] をクリックします。
- ジョブ タブで、 開発
<your-username>
]my_scala_project
をクリックします。 - 「タスク」 タブをクリックします。
タスクは 1 つ、 main_task つあるべきです。
この手順の後にバンドルに変更を加えた場合は、検証とデプロイの手順を繰り返します。
手順 5: デプロイされたプロジェクトを実行する
最後に、Databricksbundle run コマンドを使用してジョブを実行します。
-
ルートディレクトリから、 Databricks CLI
bundle run
コマンドを実行し、定義ファイルmy_scala_project.job.yml
でジョブの名前を指定します。Bashdatabricks bundle run -t dev my_scala_project
-
ターミナルに表示される
Run URL
の値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。 -
Databricks ワークスペースで、タスクが正常に完了し、緑色のタイトル バーが表示されたら、 main_task タスクをクリックして結果を確認します。