重要
このドキュメントは廃止され、更新されない可能性があります。
Databricks では、Databricks Labs による dbx ではなく、宣言型オートメーション バンドルを使用することをお勧めします。
「宣言型オートメーション バンドルとは」と「dbx からバンドルへの移行」を参照してください。
注
この記事で説明する Databricks Labs による dbx は、現状のまま提供されており、カスタマー テクニカル サポート チャネルを通じて Databricks によってサポートされているわけではありません。 ご質問や機能のリクエストは、GitHub の databrickslabs/dbx リポジトリの Issue ページを通じてご連絡いただけます。
Databricks Labs の dbx は、レガシ Databricks コマンド ライン インターフェイス (Databricks CLI) を拡張し、Azure Databricks プラットフォームでの迅速な開発ライフサイクル、継続的インテグレーションと継続的デリバリー/デプロイ (CI/CD) の機能を提供するように設計されたオープン ソース ツールです。
dbx は、複数の環境にわたるジョブの起動とデプロイ プロセスを簡略化します。 また、プロジェクトをパッケージ化し、バージョン管理された方法で Azure Databricks 環境に配信することもできます。 CLI 優先の方法で設計されており、CI/CD パイプライン内とローカル ツール (Visual Studio Code や PyCharm を含むローカル IDE など) の一部としてアクティブに使用されるように構築されています。
dbx を使用した一般的な開発ワークフローは次のとおりです。
Databricks でサポートされている Git プロバイダーを使用してリモート リポジトリを作成します (リモート リポジトリがまだ使用できない場合)。
リモート リポジトリを Azure Databricks ワークスペースに複製します。
Azure Databricks ワークスペースの複製されたリポジトリに、Azure Databricks ノートブックを作成または移動します。 このノートブックを使用して、Azure Databricks クラスターを実行するコードのプロトタイプ作成を開始します。
個別のヘルパー クラスと関数、構成ファイル、テストを個別に追加してノートブック コードを拡張およびモジュール化するには、
dbx、お好みの IDE、Git がインストールされているローカル開発マシンを使用するように切り替えます。リモート リポジトリをローカル開発マシンに複製します。
ノートブックから 1 つ以上のローカル コード ファイルにコードを移動します。
ローカルでコードを書くときに、ローカル リポジトリからリモート リポジトリに作業をプッシュします。 また、リモート リポジトリを Azure Databricks ワークスペースと 同期 します。
ヒント
あるいは、dbx sync を使うと、ローカル ファイルの変更をワークスペースの対応するファイルとリアルタイムで自動的に同期させることができます。
迅速なプロトタイプ作成のために、Azure Databricks ワークスペースでノートブックを使い続け、検証済みのコードをノートブックからローカル マシンに移動し続けます。 コードのモジュール化、コード補完、リンティング、単体テスト、および Azure Databricks へのライブ接続を必要としないコードとオブジェクトのステップスルー デバッグなどのタスクには、ローカル IDE を使い続けます。
必要に応じて、ターゲット クラスターでローカル コードをバッチ実行するために
dbxを使用します。 (これは、Spark クラスターでアプリケーションを起動するために Spark の ディレクトリで Sparkbinスクリプトを実行するのと似ています)。運用環境の準備ができたら、 GitHub Actions、 Azure DevOps、 GitLab などの CI/CD プラットフォームを使用して、クラスターでのリモート リポジトリのコードの実行を自動化します。
必要条件
dbx を使用するには、コードで Python、Scala、Java のどちらを使用しているかに関係なく、ローカル開発マシンに次のものがインストールされている必要があります:
Python バージョン 3.8 以降。
Python を使用している場合は、ターゲット クラスターにインストールされているバージョンと一致するバージョンの Python を使用する必要があります。 既存のクラスターにインストールされている Python のバージョンを取得するには、クラスターの Web ターミナル を使用して
python --versionコマンドを実行します。 ターゲット クラスターの Databricks Runtime バージョンについては、Databricks Runtime リリース ノートのバージョンと互換性」の「システム環境」セクションも参照してください。pip。
コードで Python を使用する場合は、Python 仮想環境を作成して、
dbxプロジェクトで正しいバージョンの Python とパッケージの依存関係を使用していることを確認します。 この記事では、pipenv について説明しています。dbx バージョン 0.8.0 以上。
pip install dbxを実行することで、Python パッケージ インデックス (PyPI) からこのパッケージをインストールできます。dbxがインストールされていることを確認するには、次のコマンドを実行します。dbx --versionバージョン番号が返された場合は、
dbxがインストールされています。バージョン番号が 0.8.0 未満の場合は、次のコマンドを実行して
dbxをアップグレードし、バージョン番号をもう一度検査します。pip install dbx --upgrade dbx --version # Or ... python -m pip install dbx --upgrade dbx --versionDatabricks CLI バージョン 0.18 以下では、認証を使用して設定します。
dbxをインストールすると、レガシ Databricks CLI (Databricks CLI バージョン 0.17) が自動的にインストールされます。 この認証は、次の場所のいずれかまたは両方のローカル開発マシンで設定できます。-
DATABRICKS_HOSTとDATABRICKS_TOKENの環境変数内 (レガシ Databricks CLI バージョン 0.8.0 以降)。 -
.databrickscfgファイル内の Azure Databricks 構成プロファイル。
dbxは、これら 2 つの場所でそれぞれ認証資格情報を探します。dbxでは、検出された一致する資格情報の最初のセットのみが使用されます。注
レガシ Databricks CLI バージョン 0.17.2 以降、
dbxでは、認証に対する .netrc ファイルの使用はサポートされていません。 インストールされているレガシ Databricks CLI のバージョンを確認するには、databricks --versionコマンドを実行します。-
ローカルとリモートのコードの変更をプッシュおよび同期するための git。
次のいずれかの IDE の手順に進みます。
注
Databricks では、これまでの IDE が dbx を使用していることを検証していますが、dbx はどの IDE でも動作するはずです。
NO IDE (ターミナルのみ) を使用することもできます。
dbx は、単一ファイルの Python コード ファイルとコンパイル済みの Scala および Java JAR ファイルを操作するように最適化されています。
dbx は、単一ファイルの R コード ファイルまたはコンパイル済み R コード パッケージでは機能しません。 これは、 dbx が Jobs API 2.0 および 2.1 で動作し、これらの API は単一ファイルの R コード ファイルやコンパイル済み R コード パッケージをジョブとして実行できないためです。
Visual Studio Code
Visual Studio Code と Python を dbx で使用するには、次の手順を実行します。
ローカル開発マシンには、一般的な 要件に加えて、次のものがインストールされている必要があります。
Visual Studio Code 用の Python 拡張機能。 詳細については、Visual Studio Code Web サイトの「拡張機能のマーケットプレース」を参照してください。
詳細については、Visual Studio Code ドキュメントの「VS Code での Python の概要」を参照してください。
dbx のプロジェクト 構造の設定を開始するには、次の手順に従います:
ターミナルから、空のフォルダーを作成します。 次の手順では、
dbx-demoという名前のフォルダーを使用します。dbxプロジェクトのルート フォルダーには任意の名前を付けることができます。 別の名前を使用する場合は、次の手順で名前を置き換えます。 フォルダーを作成したら、そこに切り替えて、そのフォルダーから Visual Studio Code を開始します。Linux および macOS の場合:
mkdir dbx-demo cd dbx-demo code .ヒント
command not found: codeの実行後にcode .が表示される場合は、Microsoft Web サイトの「コマンド ラインからの起動」を参照してください。Windows の場合:
md dbx-demo cd dbx-demo code .Visual Studio Code で、このプロジェクトの Python 仮想環境を作成します。
メニュー バーで、[ビュー] > [ターミナル] の順にクリックします。
dbx-demoフォルダーのルートから、次のオプションを使用してpipenvコマンドを実行します。ここで、<version>は、既にローカルにインストールされている Python のターゲット バージョン (および、ターゲット クラスターの Python のバージョンに一致するバージョン) です (たとえば、3.8.14)。pipenv --python <version>次の手順で必要になるため、
Virtualenv locationコマンドの出力のpipenv値を書き留めます。
ターゲットの Python インタープリターを選択し、Python 仮想環境をアクティブにします。
- メニュー バーで、[ビュー] > [コマンド パレット] の順にクリックし、
Python: Selectを入力し、次に [Python: インタープリターを選択する] をクリックします。 - 先ほど作成した Python 仮想環境へのパス内で Python インタープリターを選択します (このパスは、
Virtualenv locationコマンドの出力のpipenv値として一覧表示されます)。 - メニュー バーで、[ビュー] > [コマンド パレット] の順にクリックし、
Terminal: Createを入力し、次に [ターミナル: 新しいターミナルの作成] をクリックします。
詳細については、Visual Studio Code ドキュメントの「VS Code での Python 環境の使用」を参照してください。
- メニュー バーで、[ビュー] > [コマンド パレット] の順にクリックし、
「dbx プロジェクトの作成」に進みます。
PyCharm
PyCharm と Python を dbx で使用するには、次の手順を実行します。
ローカル開発マシンには、一般的な要件に加えて、PyCharm がインストールされている必要があります。
dbx のプロジェクト 構造の設定を開始するには、次の手順に従います:
- PyCharm のメニュー バーで [ファイル] > [新しいプロジェクト] をクリックします。
- [プロジェクトの作成] ダイアログで、新しいプロジェクトの場所を選択します。
- [Python インタープリター: 新しい Pipenv 環境] を展開します。
- まだ選択されていない場合は、[使用する新しい環境] を選択し、ドロップダウン リストから [Pipenv] を選択します。
- ベース インタープリターの場合は、既にローカルにインストールされている Python のターゲット バージョンの Python インタープリターを含む場所を選択します (理想的には、ターゲット クラスターの Python バージョンに一致するバージョン)。
-
Pipenv 実行可能ファイルの場合は、まだ自動検出されていなければ、
pipenvのローカル インストールが含まれている場所を選択します。 - 最小限の
dbxプロジェクトを作成し、その最小限のmain.pyプロジェクトでdbxファイルを使用する場合は、[main.py ウェルカム スクリプトの作成] ボックスを選択します。 それ以外の場合は、このボックスを解除してください。 - Create をクリックしてください。
- [プロジェクト] ツール ウィンドウで、プロジェクトのルート フォルダーを右クリックし、[> ターミナルで開く] をクリックします。
- 「dbx プロジェクトの作成」に進みます。
IntelliJ アイデア
IntelliJ IDEA と Scala を dbx で使用するには、次の手順を実行します。 これらの手順では、dbx プロジェクトの開始に使用できる最小限の sbt ベースの Scala プロジェクトを作成します。
ローカル開発マシンには、一般的な 要件に加えて、次のものがインストールされている必要があります。
- IntelliJ IDEA。
- IntelliJ IDEA 用の Scala プラグイン。 詳細については、IntelliJ IDEA ドキュメントの「IntelliJ IDEA for Scala の検出」を参照してください。
- Java ランタイム環境 (JRE) 8。 JRE 8 のすべてのエディションは動作するはずですが、Databricks はこれまで OpenJDK 8 JRE での
dbxと IntelliJ IDEA の使用のみを検証してきました。 Databricks は、IntelliJ IDEA と Java 11 でのdbxの使用をまだ検証していません。 詳細については、IntelliJ IDEA ドキュメントの Java Development Kit (JDK) を参照してください。
dbx のプロジェクト 構造の設定を開始するには、次の手順に従います:
手順 1: sbt ベースの Scala プロジェクトを作成する
- IntelliJ IDEA で、ビューに応じて、[プロジェクト] > [新しいプロジェクト] または [ファイル] > [新規] > [プロジェクト]をクリックします。
- [新しいプロジェクト] ダイアログで、[Scala] をクリックし、[sbt] をクリックし、[次へ] をクリックします。
- プロジェクト名と、プロジェクトの場所を入力します。
- JDK の場合は、OpenJDK 8 JRE のインストールを選択します。
-
sbt の場合は、一覧に記載されている最も高い使用可能なバージョン
sbtを選択します。 - Scala の場合、理想的には、ターゲット クラスターの Scala のバージョンに一致する Scala のバージョンを選択します。 ターゲット クラスターの Databricks Runtime バージョンについては、Databricks Runtime リリース ノートのバージョンと互換性 の「システム環境」セクションを参照してください。
- Scala の横にある [ソース] ボックスがまだ選択されていない場合は選択します。
- パッケージ プレフィックスを パッケージ プレフィックスに追加します。 これらの手順では、パッケージ プレフィックス
com.example.demoを使用します。 別のパッケージ プレフィックスを指定する場合は、次の手順でパッケージ プレフィックスを置き換えます。 - [完了] をクリックします。
手順 2: パッケージにオブジェクトを追加する
必要なオブジェクトをパッケージに追加できます。 このパッケージには、SampleApp という名前の 1 つのオブジェクトが含まれています。
プロジェクトツール ウィンドウ (表示 > ツール ウィンドウ > プロジェクト) でproject-name> src > main > scala フォルダーを右クリックし、新規 > Scala クラスをクリックします。
[オブジェクト] を選択し、オブジェクトの名前を入力して Enter キーを押します。 たとえば、「
SampleApp」と入力します。 ここで別のオブジェクト名を入力する場合は、次の手順で必ず名前を置き換えてください。SampleApp.scalaファイルの内容を次のコードに置き換えます。package com.example.demo object SampleApp { def main(args: Array[String]) { } }
手順 3: プロジェクトをビルドする
必要なプロジェクト ビルド設定と依存関係をプロジェクトに追加します。 この手順では、前の手順で設定したプロジェクトをビルドしており、次のライブラリのみに依存していることを前提としています。
プロジェクトの
build.sbtファイルの内容を次の内容に置き換えます。ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / scalaVersion := "2.12.14" val sparkVersion = "3.2.1" lazy val root = (project in file(".")) .settings( name := "dbx-demo", idePackagePrefix := Some("com.example.demo"), libraryDependencies += "org.apache.spark" %% "spark-core" % sparkVersion withSources(), libraryDependencies += "org.apache.spark" %% "spark-sql" % sparkVersion withSources(), libraryDependencies += "org.apache.spark" %% "spark-hive" % sparkVersion withSources() )前のファイルで、次のように置き換えます:
-
2.12.14このプロジェクトで先ほど選択した Scala のバージョンを使用します。 -
3.2.1このプロジェクトで先ほど選択した Spark のバージョンを使用します。 -
dbx-demoをプロジェクトの名前に使用します。 -
com.example.demoをパッケージ プレフィックスの名前に使用します。
-
メニュー バーの [表示]> [ ツール ウィンドウ] >[sbt] をクリックします。
[sbt] ツール ウィンドウで、プロジェクトの名前を右クリックし、[sbt プロジェクトの再読み込み] をクリックします。
sbtがプロジェクトの依存関係を、sbtのバージョンに応じて、デフォルトではCoursierやIvyなどのインターネットアーティファクトストアからダウンロードし終えるまで待ちます。 ステータス バーでダウンロードの進行状況を確認できます。 このプロジェクトに依存関係を追加または変更する場合は、追加または変更する依存関係のセットごとに、このプロジェクトの再読み込み手順を繰り返す必要があります。メニュー バーの [IntelliJ IDEA > 基本設定] をクリックします。
[基本設定] ダイアログで、[ビルド、実行、配置]>[ ビルド ツール]> [sbt] の順にクリックします。
JVM における JRE の場合は、OpenJDK 8 JRE のインストールを選択します。
sbt プロジェクトで、プロジェクトの名前を選択します。
sbt シェルで[ビルド]を選択します。
[OK] をクリックします。
メニュー バーの [ビルド]> [プロジェクトのビルド] をクリックします。 ビルドの結果が sbt シェル ツール ウィンドウに表示されます (ツール ウィンドウ > 表示 > sbt シェル)。
手順 4 - プロジェクトにコードを追加する
必要なコードをプロジェクトに追加します。 この手順では、SampleApp.scala パッケージ内の example ファイルにのみコードを追加することを前提としています。
プロジェクトの src>main>scala>SampleApp.scala ファイルに、ターゲット クラスターでバッチ実行 dbx するコードを追加します。 基本的なテストの場合は、「コード例」セクションの Scala コードの例を使用 します。
手順 5: プロジェクトを実行する
- メニュー バーの [実行] > [構成の編集] をクリックします。
- [実行/デバッグ構成] ダイアログで、+[(新しい構成の追加)] アイコンをクリックするか、[新規追加] または [新しい実行構成の追加] をクリックします。
- ドロップダウンで [sbt タスク] をクリックします。
- [名前] に、構成の名前を入力します (例: プログラムの実行)。
-
[タスク] に「
~run」と入力します。 - [Sbt シェルを使用] を選択します。
- [OK] をクリックします。
- メニュー バーで、[実行] > [プログラムの実行] をクリックします。 実行の結果が sbt シェル ツール ウィンドウに表示されます。
手順 6: プロジェクトを JAR としてビルドする
必要な JAR ビルド設定をプロジェクトに追加できます。 この手順では、前の手順で設定したプロジェクトに基づく JAR のみをビルドすることを前提としています。
- メニュー バーで [ファイル] > [プロジェクトの構造] をクリックします。
- [プロジェクトの構造] ダイアログ ボックスの [プロジェクト設定]> [ビルド成果物]をクリックします。
- + (追加) アイコンをクリックします。
- ドロップダウン リストで、依存関係のあるモジュールから JAR >を選択します。
- [モジュールから JAR を作成] ダイアログの [モジュール] で、プロジェクトの名前を選択します。
- メイン クラスの場合は、フォルダー アイコンをクリックします。
- [メイン クラスの選択] ダイアログの [名前で検索] タブで [SampleApp] を選択し、[OK] をクリックします。
- ライブラリから JAR ファイルの場合は、出力ディレクトリにコピーし、マニフェスト経由でリンクすることを選択します。
- [OK] を クリックして、[モジュールから JAR を作成] ダイアログを閉じます。
- [OK] をクリックして、[プロジェクト構造] ダイアログを閉じます。
- メニューバーで > をクリックします。
- 表示されるコンテキスト メニューで、 project-name:jar > Build を選択します。
sbtが JAR をビルド中に待機します。 ビルドの結果が [ビルド出力] ツール ウィンドウに表示されます ([ツール ウィンドウ] > ビルド>表示)。
JAR はプロジェクトの out>artifacts><project-name>_jar フォルダーにビルドされます。 JAR の名前は <project-name>.jar。
手順 7: IDE にターミナルを表示する
dbx プロジェクト構造が整ったら、dbx プロジェクトを作成する準備が整います。
メニュー バーの [表示]> [ツール ウィンドウ] > [ターミナル] をクリックして IntelliJ IDEA ターミナルを表示し、[dbx プロジェクトの作成] に進みます。
Eclipse
Eclipse と Java の dbx での使用を開始するには、次の手順を実行します。 これらの手順では、dbx プロジェクトの開始に使用できる最小限の Maven ベースの Java プロジェクトを作成します。
ローカル開発マシンには、一般的な 要件に加えて、次のものがインストールされている必要があります。
- Eclipse のバージョン。 これらの手順では、Eclipse IDE の Eclipse IDE for Java Developers エディションを使用 します。
- ローカル コンピューターのオペレーティング システムに応じて、Java ランタイム環境 (JRE) または Java Development Kit (JDK) 11 のエディション。 JRE または JDK 11 のどのエディションでも機能するはずですが、Databricks ではこれまで
dbxと、Eclipse 2022-03 R (AdoptOpenJDK 11 を含む) を使用した Eclipse IDE for Java Developers の使用 のみが検証されています。
dbx のプロジェクト 構造の設定を開始するには、次の手順に従います:
手順 1: Maven ベースの Java プロジェクトを作成する
- Eclipse で、[ファイル] > [新規] >[プロジェクト] をクリックします。
- [新しいプロジェクト] ダイアログで、Maven を展開し、[Maven プロジェクト] を選択して [次へ] をクリックします。
- [新しい Maven プロジェクト] ダイアログで、[単純なプロジェクトの作成 (アーキタイプの選択をスキップ)] を選択し、[次へ] をクリックします。
-
[グループ ID] には、Java のパッケージ名規則に準拠するグループ ID を入力します。 これらの手順では、パッケージ プレフィックス
com.example.demoを使用します。 別のグループ ID を入力する場合は、次の手順で置き換えます。 -
成果物 ID には、バージョン番号のない JAR ファイルの名前を入力します。 この手順では、
dbx-demoの JAR 名を使用します。 JAR ファイルに別の名前を入力する場合は、次の手順で置き換えておきます。 - [完了] をクリックします。
手順 2: パッケージにクラスを追加する
必要な任意のクラスをパッケージに追加できます。 このパッケージには、SampleApp という名前の 1 つのクラスが含まれます。
- [プロジェクト エクスプローラー] ビュー ([ウィンドウ] >[ビューの表示]> [プロジェクト エクスプローラー]) でproject-name プロジェクト アイコンを選択し、[ファイル]>[新規] > [クラス] をクリックします。
- [新しい Java クラス] ダイアログで、[パッケージ] に「
com.example.demo」と入力します。 -
名前には、
SampleAppを入力します。 - 修飾子の場合は、public を選択します。
- スーパークラスは空白のままにします。
- 作成するメソッド スタブについては、public static void Main(String[] args) を選択します。
- [完了] をクリックします。
手順 3: プロジェクトに依存関係を追加する
プロジェクト エクスプローラー ビューで、project-name> pom.xml をダブルクリックします。
次の依存関係を
<project>要素の子要素として追加し、ファイルを保存します:<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.12</artifactId> <version>3.2.1</version> <scope>provided</scope> </dependency> </dependencies>置換:
- ターゲット クラスターの Scala のバージョンを使用した
2.12。 - ターゲット クラスターの Spark のバージョンを使用した
3.2.1。
ターゲット クラスターの Databricks Runtime バージョンについては、Databricks Runtime リリース ノートのバージョンと互換性 の「システム環境」セクションを参照してください。
- ターゲット クラスターの Scala のバージョンを使用した
手順 4: プロジェクトをコンパイルする
プロジェクトの
pom.xmlファイルで、次の Maven コンパイラ プロパティを<project>要素の子要素として追加し、ファイルを保存します。<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.6</maven.compiler.source> <maven.compiler.target>1.6</maven.compiler.target> </properties>プロジェクト エクスプローラー ビューで、project-name プロジェクト アイコンを右クリックし、実行 > 実行構成 をクリックします。
[実行構成] ダイアログで、[Maven ビルド] をクリックします。
[新しい起動構成] アイコンをクリックします。
クリーン コンパイルなど、この起動構成の名前を入力 します。
[ベース ディレクトリ] で、[ワークスペース] をクリックし、プロジェクトのディレクトリを選択して、[OK] をクリックします。
[Goals](目標) に「
clean compile」と入力します。[実行] をクリックします。 実行の出力が コンソール ビューに表示されます ([ウィンドウ] > [ビューの表示] > コンソール)。
手順 5 - プロジェクトにコードを追加する
必要なコードをプロジェクトに追加できます。 この手順では、SampleApp.java という名前のパッケージ用に com.example.demo という名前のファイルにのみコードを追加することを前提としています。
プロジェクトの src/main/java>com.example.demo>SampleApp.java ファイルに、ターゲット クラスターでバッチ実行 dbx するコードを追加します。 (すぐにコードを用意することが難しい場合は、この記事の最後の方に記載されている コードの例の Java コードを使用できます。)
手順 6: プロジェクトを実行する
- プロジェクト エクスプローラー ビューで、project-name プロジェクト アイコンを右クリックし、実行 > 実行構成 をクリックします。
- [実行構成] ダイアログで、[Java アプリケーション] を展開し、[アプリ] をクリックします。
- [実行] をクリックします。 実行の出力が コンソール ビューに表示されます。
手順 7: プロジェクトを JAR としてビルドする
- プロジェクト エクスプローラー ビューで、project-name プロジェクト アイコンを右クリックし、実行 > 実行構成 をクリックします。
- [実行構成] ダイアログで、[Maven ビルド] をクリックします。
- [新しい起動構成] アイコンをクリックします。
- クリーン パッケージなど、この起動構成の名前を入力 します。
- [ベース ディレクトリ] で、[ワークスペース] をクリックし、プロジェクトのディレクトリを選択して、[OK] をクリックします。
-
[Goals](目標) に「
clean package」と入力します。 - [実行] をクリックします。 実行の出力が コンソール ビューに表示されます。
JAR は <project-name>>target フォルダーにビルドされます。 JAR の名前は <project-name>-0.0.1-SNAPSHOT.jar。
注
最初に targetプロジェクト エクスプローラー ウィンドウのフォルダーに JAR が表示されない場合は、project-name プロジェクト アイコンを右クリックして表示し、[最新の情報に更新] をクリックします。
手順 8: IDE にターミナルを表示する
dbx プロジェクト構造が整ったら、dbx プロジェクトを作成する準備が整います。 開始するには、次のように、プロジェクト エクスプローラー ビュー を設定して、./ により生成される隠しファイル (ドットで始まるファイル (dbx)) を表示します:
- プロジェクト エクスプローラー ビューで、楕円 ([表示] メニュー) フィルター アイコンをクリックし、[フィルターとカスタマイズ] をクリックします。
- [ フィルターとカスタマイズ ] ダイアログの [ 事前設定されたフィルター ] タブで、[ .* リソース ] ボックスをオフにします。
- [OK] をクリックします。
次に、Eclipse ターミナルを次のように表示します:
- メニュー バー の [ウィンドウ] > [ビューを表示] > [ターミナル] をクリックします。
- ターミナルのコマンド プロンプトが表示されない場合は、[ ターミナル ] ビューで [ ターミナルを開く ] アイコンをクリックします。
-
cdコマンドを使用して、プロジェクトのルート ディレクトリに切り替えます。 - 「dbx プロジェクトの作成」に進みます。
IDE なし (ターミナルのみ)
dbx でターミナルと Python を使用するには、次の手順を実行します。
ターミナルを使用して dbx プロジェクト構造の設定を開始するには、次の手順に従います:
ターミナルから、空のフォルダーを作成します。 次の手順では、
dbx-demoという名前のフォルダーを使用します (ただし、dbxプロジェクトのルート フォルダーには任意の名前を付けることができます)。 フォルダーを作成したら、それに切り替えます。Linux および macOS の場合:
mkdir dbx-demo cd dbx-demoWindows の場合:
md dbx-demo cd dbx-demopipenvフォルダーのルートからdbx-demoコマンドを実行して、このプロジェクトの Python 仮想環境を作成します。ここで、<version>は、既にローカルにインストールした Python のターゲットバージョンです (たとえば3.8.14)。pipenv --python <version>pipenv shellを実行して Python 仮想環境をアクティブ化します。pipenv shell「dbx プロジェクトの作成」に進みます。
dbx プロジェクトを作成する
前のセクションのいずれかの dbx プロジェクト構造を配置すると、次のいずれかの種類のプロジェクトを作成する準備が整います:
- Python 向け最小限の dbx プロジェクトを作成する
- Scala または Java 向けの最小限の dbx プロジェクトを作成する
- CI/CD サポートを含む Python 向け dbx テンプレート プロジェクトを作成する
Python 向けの最小限の dbx プロジェクトを作成する
次の最小限の dbx プロジェクトは、Python および dbx の使用を開始するための最もシンプルで最速のアプローチです。 これは、Azure Databricks ワークスペース内の既存の Azure Databricks 汎用クラスターで単一の Python コードをバッチ実行する方法を示します。
注
汎用クラスターとジョブ クラスター、リモート コード成果物デプロイ、CI/CD プラットフォーム セットアップでコードのバッチ実行を示す Python 用 dbx テンプレート プロジェクトを作成するには、CI/CD サポートを含む Python 用 dbx テンプレート プロジェクトを作成する方法に進んでください。
この手順を完了するには、ワークスペースに既存の汎用クラスターが必要です (「コンピューティングを表示する」またはコンピューティング構成のリファレンスを参照してください。)理想的には (必須ではありませんが)、Python 仮想環境の Python のバージョンは、このクラスターにインストールされているバージョンと一致する必要があります。 クラスター上の Python のバージョンを識別するには、クラスターの Web ターミナル を使用してコマンド python --versionを実行します。
python --version
ターミナルから、
dbxプロジェクトのルート フォルダーから、次のオプションを使用してdbx configureコマンドを実行します。 このコマンドは、.dbxプロジェクトのルート フォルダー内に非表示のdbxフォルダーを作成します。 この.dbxフォルダーには、lock.jsonおよびproject.jsonファイルが含まれています。dbx configure --profile DEFAULT --environment default注
project.jsonファイルでは、defaultという名前の環境と、DEFAULTファイル内の.databrickscfgプロファイルへの参照を定義しています。 別のプロファイルdbx使用する場合は、--profile DEFAULTコマンドで、--profileをdbx configureに置き換え、その後にターゲット プロファイルの名前を付けます。たとえば、
DEVファイルに.databrickscfgというプロファイルがあり、dbxでDEFAULTプロファイルの代わりにそれを使用したい場合、project.jsonファイルは次のようになります。この場合、--environment defaultコマンドで--environment devをdbx configureに置き換えます。{ "environments": { "default": { "profile": "DEFAULT", "storage_type": "mlflow", "properties": { "workspace_directory": "/Workspace/Shared/dbx/projects/<current-folder-name>", "artifact_location": "dbfs:/dbx/<current-folder-name>" } }, "dev": { "profile": "DEV", "storage_type": "mlflow", "properties": { "workspace_directory": "/Workspace/Shared/dbx/projects/<some-other-folder-name>", "artifact_location": "dbfs:/dbx/<some-other-folder-name>" } } } }dbxで、DATABRICKS_HOSTファイル内のプロファイルではなく、DATABRICKS_TOKENおよび.databrickscfgの各環境変数を使用する場合は、--profileコマンドからdbx configureオプションをすべて削除します。confプロジェクトのルート フォルダー内にdbxという名前のフォルダーを作成します。Linux および macOS の場合:
mkdir confWindows の場合:
md confdeployment.yamlディレクトリにconfファイルという名前のファイルを追加します。ファイルの内容は次のとおりです。build: no_build: true environments: default: workflows: - name: 'dbx-demo-job' spark_python_task: python_file: 'file://dbx-demo-job.py'注
deployment.yamlファイルには、.databrickscfgファイル内の大文字のDEFAULTプロファイルへの参照である小文字の単語defaultが含まれています。 別のプロファイルを使用したい場合は、dbxをターゲットプロファイルの名前defaultに置き換えてください。たとえば、
DEVファイルに.databrickscfgというプロファイルがあり、dbxでDEFAULTプロファイルの代わりにそれを使用したい場合、deployment.yamlファイルは次のようになります。environments: default: workflows: - name: 'dbx-demo-job' spark_python_task: python_file: 'file://dbx-demo-job.py' dev: workflows: - name: '<some-other-job-name>' spark_python_task: python_file: 'file://<some-other-filename>.py'dbxで、DATABRICKS_HOSTファイルのプロファイルの代わりにDATABRICKS_TOKENおよび.databrickscfgの各環境変数を使用する場合は、defaultのdeployment.yamlをそのままにしておきます。dbxでは、この参照が既定で使用されます。ヒント
Spark 構成のキーと値のペアをジョブに追加するには、たとえば次のように
spark_confフィールドを使用します。environments: default: workflows: - name: 'dbx-demo-job' spark_conf: spark.speculation: true spark.streaming.ui.retainedBatches: 5 spark.driver.extraJavaOptions: '-verbose:gc -XX:+PrintGCDetails' # ...ジョブにアクセス許可を追加するには、
access_control_listフィールドを使用します。次に例を示します。environments: default: workflows: - name: 'dbx-demo-job' access_control_list: - user_name: 'someone@example.com' permission_level: 'IS_OWNER' - group_name: 'some-group' permission_level: 'CAN_VIEW' # ...access_control_listフィールドは完全である必要があるため、ジョブの所有者を一覧に追加し、他のユーザーとグループのアクセス許可を追加する必要があることに注意してください。dbx-demo-job.pyという名前の ファイルにクラスターで実行するコードを追加し、dbxプロジェクトのルート フォルダーにファイルを追加します。 (すぐにコードを用意することが難しい場合は、この記事の最後の方に記載されている コードの例 の Python コードを使用できます)。注
このファイルに
dbx-demo-job.pyという名前を付ける必要はありません。 別のファイル名を選択した場合は、python_fileファイル内のconf/deployment.yamlフィールドが一致するように必ず更新してください。次のオプションを使用して
dbx executeコマンドを実行します。 このコマンドでは、<existing-cluster-id>をワークスペース内のクラシック コンピューティングの ID に置き換えます。 (ID を取得するには、「 コンピューティング リソースの URL と ID」を参照してください)。dbx execute --cluster-id=<existing-cluster-id> dbx-demo-job --no-package実行の結果をローカルで表示するには、ターミナルの出力を参照してください。 クラスターで実行の結果を表示するには、クラスターの [ドライバー ログ] タブの [標準出力] ウィンドウに移動します。 (「コンピューティング ドライバーとワーカー ログ」を参照してください。)
その他のリソースに進みます。
Scala または Java 向けの最小限の dbx プロジェクトを作成する
次の最小限の dbx プロジェクトは、dbx および Scala または Java の使用を開始するための最もシンプルで最速のアプローチです。 ここでは、単一の Scala または Java の JAR を Azure Databricks ワークスペースにデプロイし、そのデプロイされた JAR を Azure Databricks ワークスペースの Azure Databricks ジョブ クラスターで実行する方法を示します。
注
Azure Databricks では、クラスターで Scala コードと Java コードを実行する方法が制限されています:
- 単一の Python ファイルと同様に、クラスター上で単一の Scala または Java ファイルをジョブとして実行することはできません。 Scala コードまたは Java コードを実行するには、まず JAR にビルドする必要があります。
- JAR は、既存の 汎用クラスターでジョブとして実行できます。 ただし、その JAR に対する更新プログラムを同じ汎用クラスターに再インストールすることはできません。 この場合は、代わりにジョブ クラスターを使用する必要があります。 このセクションでは、ジョブ クラスターのアプローチを使用します。
- そのワークスペース内の任意の汎用クラスターまたはジョブ クラスターでデプロイされた JAR を実行するには、まず Azure Databricks ワークスペースに JAR をデプロイする必要があります。
ターミナルで、プロジェクトのルート フォルダーから、次のオプションを指定して
dbx configureコマンドを実行します。 このコマンドを実行すると、プロジェクトのルート フォルダー内に非表示の.dbxフォルダーが作成されます。 この.dbxフォルダーには、lock.jsonおよびproject.jsonファイルが含まれています。dbx configure --profile DEFAULT --environment default注
project.jsonファイルでは、defaultという名前の環境と、DEFAULTファイル内の.databrickscfgプロファイルへの参照を定義しています。 別のプロファイルdbx使用する場合は、--profile DEFAULTコマンドで、--profileをdbx configureに置き換え、その後にターゲット プロファイルの名前を付けます。たとえば、
DEVファイルに.databrickscfgというプロファイルがあり、dbxでDEFAULTプロファイルの代わりにそれを使用したい場合、project.jsonファイルは次のようになります。この場合、--environment defaultコマンドで--environment devをdbx configureに置き換えます。{ "environments": { "default": { "profile": "DEFAULT", "storage_type": "mlflow", "properties": { "workspace_directory": "/Workspace/Shared/dbx/projects/<current-folder-name>", "artifact_location": "dbfs:/dbx/<current-folder-name>" } }, "dev": { "profile": "DEV", "storage_type": "mlflow", "properties": { "workspace_directory": "/Workspace/Shared/dbx/projects/<some-other-folder-name>", "artifact_location": "dbfs:/dbx/<some-other-folder-name>" } } } }dbxで、DATABRICKS_HOSTファイル内のプロファイルではなく、DATABRICKS_TOKENおよび.databrickscfgの各環境変数を使用する場合は、--profileコマンドからdbx configureオプションをすべて削除します。プロジェクトのルート フォルダー内に
confという名前のフォルダーを作成します。Linux および macOS の場合:
mkdir confWindows の場合:
md confdeployment.yamlディレクトリにconfファイルという名前のファイルを追加します。ファイルの最低限の内容は次のとおりです:build: no_build: true environments: default: workflows: - name: 'dbx-demo-job' new_cluster: spark_version: '10.4.x-scala2.12' node_type_id: 'Standard_DS3_v2' num_workers: 2 instance_pool_id: 'my-instance-pool' libraries: - jar: 'file://out/artifacts/dbx_demo_jar/dbx-demo.jar' spark_jar_task: main_class_name: 'com.example.demo.SampleApp'置換:
- ターゲット ジョブ クラスターに対する適切な
spark_versionを持つの値。 - ターゲット ジョブ クラスターに適した
node_type_idを持つの値。 - ジョブの高速実行を可能にするために、ワークスペース内の既存のインスタンス プール の ID を持つ
instance_pool_id値。 使用可能な既存のインスタンス プールがない場合、またはインスタンス プールを使用しない場合は、この行を完全に削除します。 - プロジェクト内のJAR へのパスを持つ
jar値。 Scala を使用した IntelliJ IDEA の場合、file://out/artifacts/dbx_demo_jar/dbx-demo.jarとなります。 Java を使用した Eclipse IDEA の場合、file://target/dbx-demo-0.0.1-SNAPSHOT.jarとなります。 -
main_class_nameは、たとえば JAR 内のメイン クラスの名前に対するcom.example.demo.SampleAppの値です。
注
deployment.yamlファイルには、defaultファイル内のdefault環境への参照である単語.dbx/project.jsonが含まれています。これは、DEFAULTファイル内の.databrickscfgプロファイルへの参照です。dbxに別のプロファイルを使用する場合は、このdefaultファイルのdeployment.yamlを.dbx/project.jsonファイル内の対応する参照に置き換え、.databrickscfgファイル内の対応するプロファイルを参照します。たとえば、
DEVファイルに.databrickscfgというプロファイルがあり、dbxでDEFAULTプロファイルの代わりにそれを使用したい場合、deployment.yamlファイルは次のようになります。environments: default: workflows: - name: 'dbx-demo-job' # ... dev: workflows: - name: '<some-other-job-name>' # ...dbxで、DATABRICKS_HOSTファイルのプロファイルの代わりにDATABRICKS_TOKENおよび.databrickscfgの各環境変数を使用する場合は、defaultのdeployment.yamlをそのままにしておきます。dbxでは、defaultファイルのprofile環境設定 (値.dbx/project.jsonを除く) が 既定で使用されます。ヒント
Spark 構成のキーと値のペアをジョブに追加するには、たとえば次のように
spark_confフィールドを使用します。environments: default: workflows: - name: 'dbx-demo-job' spark_conf: spark.speculation: true spark.streaming.ui.retainedBatches: 5 spark.driver.extraJavaOptions: '-verbose:gc -XX:+PrintGCDetails' # ...ジョブにアクセス許可を追加するには、
access_control_listフィールドを使用します。次に例を示します。environments: default: workflows: - name: 'dbx-demo-job' access_control_list: - user_name: 'someone@example.com' permission_level: 'IS_OWNER' - group_name: 'some-group' permission_level: 'CAN_VIEW' # ...access_control_listフィールドは完全である必要があるため、ジョブの所有者を一覧に追加し、他のユーザーとグループのアクセス許可を追加する必要があることに注意してください。- ターゲット ジョブ クラスターに対する適切な
dbx deployコマンドを実行します。dbxは、一致する環境の.dbx/project.jsonファイルのartifact_locationパス内の場所に JAR をデプロイします。dbxまた、 MLflow 実験の一部として、プロジェクトのファイルを、一致する環境の.dbx/project.jsonファイルのworkspace_directoryパスに一覧表示されている場所に配置します。dbx deploy --no-package次のオプションを使用して
dbx launchコマンドを実行します。 このコマンドは、conf/deployment.yamlで名前が一致するジョブを実行します。 ジョブの一部として実行するデプロイされた JAR を見つけるには、dbxは、一致する環境の.dbx/project.jsonファイルのartifact_locationパス内の場所を参照します。 実行する特定の JAR を決定するために、dbxは、一致する環境の.dbx/project.jsonファイルのworkspace_directoryパスに記載されている場所で MLflow 実験を参照します。dbx launch dbx-demo-jobジョブ クラスターでジョブ実行の結果を表示するには、「 ジョブとパイプラインの表示」を参照してください。
ジョブが参照した実験を表示するには、「MLflow 実験を使用してトレーニング実行を整理する」を参照してください。
その他のリソースに進みます。
CI/CD サポートを含む Python 向け dbx テンプレート プロジェクトを作成する
次の Python 用dbx テンプレート プロジェクトは、Azure Databricks ワークスペース内の Azure Databricks の汎用クラスターとジョブ クラスター、リモート コード成果物デプロイ、CI/CD プラットフォーム セットアップで Python コードのバッチ実行のサポートを示しています。 (既存の汎用クラスターでの単一の Python コードのバッチ実行のみを示す Paython 用最小限の dbx プロジェクトを作成するには、「最小限の Paython 用 dbx プロジェクトを作成する」に戻ります)。
ターミナルから、
dbxプロジェクトのルート フォルダーで、dbx initコマンドを実行します。dbx initproject_name には、プロジェクトの名前を入力するか、Enter キーを押して既定のプロジェクト名をそのまま使用します。
version には、プロジェクトの開始バージョン番号を入力するか、Enter キーを押して既定のプロジェクト バージョンをそのまま使用します。
cloud には、プロジェクトで使用する Azure Databricks クラウド バージョンに対応する番号を選択するか、Enter キーを押して既定値をそのまま使用します。
cicd_tool には、プロジェクトで使用するサポートされている CI/CD に対応する番号を選択するか、Enter キーを押して既定値をそのまま使用します。
project_slugには、プロジェクト内のリソースに使用するプレフィックスを入力するか、Enter キーを押して既定値をそのまま使用します。
workspace_directory には、プロジェクトのワークスペース ディレクトリへのローカル パスを入力するか、Enter キーを押して既定値をそのまま使用します。
artifact_locationの場合は、Azure Databricks ワークスペース内のプロジェクトの成果物が書き込まれるパスを入力するか、Enter キーを押して既定値をそのまま使用します。
profile には、プロジェクトで使用する CLI 認証プロファイルの名前を入力するか、Enter キーを押して既定値をそのまま使用します。
ヒント
たとえば、ハードコーディングされたテンプレート パラメーターを使用して dbx init を実行すると、前の手順をスキップできます。
dbx init --template="python_basic" \
-p "project_name=cicd-sample-project" \
-p "cloud=Azure" \
-p "cicd_tool=Azure DevOps" \
-p "profile=DEFAULT" \
--no-input
dbx により、パラメーター project_slug、workspace_directory、artifact_location が自動的に計算されます。 これら 3 つのパラメーターはオプションであり、より高度なユース ケースでのみ役立ちます。
init ドキュメントの「CLI Reference」(CLI リファレンス) の dbx コマンドを参照してください。
その他のリソースも参照してください。
コード例
dbx のバッチ実行にすぐに使用できるコードがない場合は、dbx で次のコードをバッチ実行して実験することができます。 このコードは、ワークスペースに小さなテーブルを作成し、テーブルにクエリを実行してから、テーブルを削除します。
ヒント
テーブルを削除せずにワークスペースに残す場合は、dbx でバッチ実行する前に、この例のコードの最後の行をコメントアウトします。
Python
# For testing and debugging of local objects, run
# "pip install pyspark=X.Y.Z", where "X.Y.Z"
# matches the version of PySpark
# on your target clusters.
from pyspark.sql import SparkSession
from pyspark.sql.types import *
from datetime import date
spark = SparkSession.builder.appName("dbx-demo").getOrCreate()
# Create a DataFrame consisting of high and low temperatures
# by airport code and date.
schema = StructType([
StructField('AirportCode', StringType(), False),
StructField('Date', DateType(), False),
StructField('TempHighF', IntegerType(), False),
StructField('TempLowF', IntegerType(), False)
])
data = [
[ 'BLI', date(2021, 4, 3), 52, 43],
[ 'BLI', date(2021, 4, 2), 50, 38],
[ 'BLI', date(2021, 4, 1), 52, 41],
[ 'PDX', date(2021, 4, 3), 64, 45],
[ 'PDX', date(2021, 4, 2), 61, 41],
[ 'PDX', date(2021, 4, 1), 66, 39],
[ 'SEA', date(2021, 4, 3), 57, 43],
[ 'SEA', date(2021, 4, 2), 54, 39],
[ 'SEA', date(2021, 4, 1), 56, 41]
]
temps = spark.createDataFrame(data, schema)
# Create a table on the cluster and then fill
# the table with the DataFrame's contents.
# If the table already exists from a previous run,
# delete it first.
spark.sql('USE default')
spark.sql('DROP TABLE IF EXISTS demo_temps_table')
temps.write.saveAsTable('demo_temps_table')
# Query the table on the cluster, returning rows
# where the airport code is not BLI and the date is later
# than 2021-04-01. Group the results and order by high
# temperature in descending order.
df_temps = spark.sql("SELECT * FROM demo_temps_table " \
"WHERE AirportCode != 'BLI' AND Date > '2021-04-01' " \
"GROUP BY AirportCode, Date, TempHighF, TempLowF " \
"ORDER BY TempHighF DESC")
df_temps.show()
# Results:
#
# +-----------+----------+---------+--------+
# |AirportCode| Date|TempHighF|TempLowF|
# +-----------+----------+---------+--------+
# | PDX|2021-04-03| 64| 45|
# | PDX|2021-04-02| 61| 41|
# | SEA|2021-04-03| 57| 43|
# | SEA|2021-04-02| 54| 39|
# +-----------+----------+---------+--------+
# Clean up by deleting the table from the cluster.
spark.sql('DROP TABLE demo_temps_table')
スカラ (プログラミング言語)
package com.example.demo
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row
import java.sql.Date
object SampleApp {
def main(args: Array[String]) {
val spark = SparkSession.builder().master("local").getOrCreate()
val schema = StructType(Array(
StructField("AirportCode", StringType, false),
StructField("Date", DateType, false),
StructField("TempHighF", IntegerType, false),
StructField("TempLowF", IntegerType, false)
))
val data = List(
Row("BLI", Date.valueOf("2021-04-03"), 52, 43),
Row("BLI", Date.valueOf("2021-04-02"), 50, 38),
Row("BLI", Date.valueOf("2021-04-01"), 52, 41),
Row("PDX", Date.valueOf("2021-04-03"), 64, 45),
Row("PDX", Date.valueOf("2021-04-02"), 61, 41),
Row("PDX", Date.valueOf("2021-04-01"), 66, 39),
Row("SEA", Date.valueOf("2021-04-03"), 57, 43),
Row("SEA", Date.valueOf("2021-04-02"), 54, 39),
Row("SEA", Date.valueOf("2021-04-01"), 56, 41)
)
val rdd = spark.sparkContext.makeRDD(data)
val temps = spark.createDataFrame(rdd, schema)
// Create a table on the Databricks cluster and then fill
// the table with the DataFrame's contents.
// If the table already exists from a previous run,
// delete it first.
spark.sql("USE default")
spark.sql("DROP TABLE IF EXISTS demo_temps_table")
temps.write.saveAsTable("demo_temps_table")
// Query the table on the Databricks cluster, returning rows
// where the airport code is not BLI and the date is later
// than 2021-04-01. Group the results and order by high
// temperature in descending order.
val df_temps = spark.sql("SELECT * FROM demo_temps_table " +
"WHERE AirportCode != 'BLI' AND Date > '2021-04-01' " +
"GROUP BY AirportCode, Date, TempHighF, TempLowF " +
"ORDER BY TempHighF DESC")
df_temps.show()
// Results:
//
// +-----------+----------+---------+--------+
// |AirportCode| Date|TempHighF|TempLowF|
// +-----------+----------+---------+--------+
// | PDX|2021-04-03| 64| 45|
// | PDX|2021-04-02| 61| 41|
// | SEA|2021-04-03| 57| 43|
// | SEA|2021-04-02| 54| 39|
// +-----------+----------+---------+--------+
// Clean up by deleting the table from the Databricks cluster.
spark.sql("DROP TABLE demo_temps_table")
}
}
Java
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import java.sql.Date;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.types.*;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.Dataset;
public class SampleApp {
public static void main(String[] args) {
SparkSession spark = SparkSession
.builder()
.appName("Temps Demo")
.config("spark.master", "local")
.getOrCreate();
// Create a Spark DataFrame consisting of high and low temperatures
// by airport code and date.
StructType schema = new StructType(new StructField[] {
new StructField("AirportCode", DataTypes.StringType, false, Metadata.empty()),
new StructField("Date", DataTypes.DateType, false, Metadata.empty()),
new StructField("TempHighF", DataTypes.IntegerType, false, Metadata.empty()),
new StructField("TempLowF", DataTypes.IntegerType, false, Metadata.empty()),
});
List<Row> dataList = new ArrayList<Row>();
dataList.add(RowFactory.create("BLI", Date.valueOf("2021-04-03"), 52, 43));
dataList.add(RowFactory.create("BLI", Date.valueOf("2021-04-02"), 50, 38));
dataList.add(RowFactory.create("BLI", Date.valueOf("2021-04-01"), 52, 41));
dataList.add(RowFactory.create("PDX", Date.valueOf("2021-04-03"), 64, 45));
dataList.add(RowFactory.create("PDX", Date.valueOf("2021-04-02"), 61, 41));
dataList.add(RowFactory.create("PDX", Date.valueOf("2021-04-01"), 66, 39));
dataList.add(RowFactory.create("SEA", Date.valueOf("2021-04-03"), 57, 43));
dataList.add(RowFactory.create("SEA", Date.valueOf("2021-04-02"), 54, 39));
dataList.add(RowFactory.create("SEA", Date.valueOf("2021-04-01"), 56, 41));
Dataset<Row> temps = spark.createDataFrame(dataList, schema);
// Create a table on the Databricks cluster and then fill
// the table with the DataFrame's contents.
// If the table already exists from a previous run,
// delete it first.
spark.sql("USE default");
spark.sql("DROP TABLE IF EXISTS demo_temps_table");
temps.write().saveAsTable("demo_temps_table");
// Query the table on the Databricks cluster, returning rows
// where the airport code is not BLI and the date is later
// than 2021-04-01. Group the results and order by high
// temperature in descending order.
Dataset<Row> df_temps = spark.sql("SELECT * FROM demo_temps_table " +
"WHERE AirportCode != 'BLI' AND Date > '2021-04-01' " +
"GROUP BY AirportCode, Date, TempHighF, TempLowF " +
"ORDER BY TempHighF DESC");
df_temps.show();
// Results:
//
// +-----------+----------+---------+--------+
// |AirportCode| Date|TempHighF|TempLowF|
// +-----------+----------+---------+--------+
// | PDX|2021-04-03| 64| 45|
// | PDX|2021-04-02| 61| 41|
// | SEA|2021-04-03| 57| 43|
// | SEA|2021-04-02| 54| 39|
// +-----------+----------+---------+--------+
// Clean up by deleting the table from the Databricks cluster.
spark.sql("DROP TABLE demo_temps_table");
}
}
その他のリソース
conf/deployment.yaml ファイルを拡張して、さまざまな種類の汎用およびジョブ クラスター定義をサポートする。
複数タスクのジョブを宣言する
conf/deployment.yamlファイル内で。名前付きプロパティを
conf/deployment.yamlファイル内で参照する。dbx execute コマンドを使用して、コードをクラスター上の新しいジョブとしてバッチ実行する。
dbx deploy コマンドを使用して、コード成果物を Azure Databricks ワークスペース ストレージにバッチでデプロイする。
dbx launch コマンドを使用して、クラスター上で既存のジョブをバッチ実行する。
dbx と CI/CD の詳細については、こちらをご覧ください。
GitHub の databrickslabs/dbx リポジトリ