Lakeflow ジョブは、Azure Databricksのワークフロー自動化であり、大規模なワークフローの一部として複数のタスクを調整して実行できるように、データ処理ワークロードのオーケストレーションを提供します。 繰り返し可能な頻繁なタスクの実行を最適化してスケジュール設定し、複雑なワークフローを管理できます。
ジョブとは
Databricks では、ワークフロー内の Databricks でタスクをスケジュールおよび調整するためにジョブが使用されます。 一般的なデータ処理ワークフローには、ETL ワークフロー、ノートブックの実行、機械学習 (ML) ワークフローのほか、dbt や Azure Data Factory (ADF) などの外部システムとの統合が含まれます。
ジョブは 1 つ以上のタスクで構成され、ビジュアル作成 UI を使用した分岐 (if/else ステートメント) やループ (ステートメントごとに) などのカスタム制御フロー ロジックをサポートします。 タスクでは、ETL ワークフロー内のデータを読み込んだり変換したり、機械学習パイプラインの一部として制御された反復可能な方法で ML モデルを構築、トレーニング、デプロイしたりできます。
例: 毎日のデータ処理と検証ジョブ
次の例は、Azure Databricksのジョブを示しています。
このジョブ例には、次の特性があります。
- 最初のタスクでは、収益データが取り込まれます。
- 2 番目のタスクは、null をチェックする if/else です。
- そうでない場合は、変換タスクが実行されます。
- それ以外の場合は、データ品質検証を使用してノートブック タスクを実行します。
- 毎日同時に実行されるようにスケジュールされています。
独自のジョブの作成の概要については、「 Lakeflow ジョブを使用して最初のワークフローを作成する」を参照してください。
オーケストレーションの概念
Azure Databricksでのオーケストレーションに Lakeflow ジョブを使用する場合の主な概念は、ジョブ、タスク、トリガーの 3 つです。
ジョブ - ジョブは、操作の調整、スケジュール設定、実行のための主要なリソースです。 ジョブは、Azure Databricks ノートブックを実行する 1 つのタスクから、条件付きロジックと依存関係を持つ何百ものタスクまで、複雑さが異なる場合があります。 ジョブ内のタスクは、有向非循環グラフ (DAG) によって視覚的に表されます。 ジョブのプロパティは、次のように指定できます。
- トリガー - ジョブを実行するタイミングを定義します。
- パラメーター - ジョブ内のタスクに自動的にプッシュされる実行時パラメーター。
- 通知 - ジョブが失敗したとき、または時間かかりすぎている際に送信されるメールまたは Webhook。
- Git - ジョブ タスクのソース管理設定。
タスク - タスクは、ジョブ内の特定の作業単位です。 各タスクは、次のようなさまざまな操作を実行できます。
- ノートブック タスクは、Databricks ノートブックを実行します。 ノートブックへのパスと必要なパラメーターを指定します。
- パイプライン タスクはパイプラインを実行します。 具体化されたビューやストリーミング テーブルなど、既存の Lakeflow パイプラインを指定できます。
- Python スクリプト タスクは、Python ファイルを実行します。 ファイルへのパスと必要なパラメーターを指定します。
タスクにはさまざまな種類があります。 完全な一覧については、「 タスクの種類」を参照してください。 タスクは、他のタスクに依存したり、条件付きで他のタスクを実行したりできるため、条件付きロジックと依存関係を持つ複雑なワークフローを作成できます。
トリガー - トリガーは、特定の条件またはイベントに基づいてジョブの実行を開始するメカニズムです。 トリガーには、スケジュールされた時刻にジョブを実行する (たとえば、毎日午前 2 時) など、時間ベースのトリガーや、クラウド ストレージに新しいデータが到着したときにジョブを実行するイベント ベースを指定できます。
監視と可観測性
ジョブには、監視と可観測性のサポートが組み込まれています。 次のトピックでは、このサポートの概要について説明します。 ジョブおよびオーケストレーションの監視の詳細については、「Lakeflow ジョブの監視」を参照してください。
UI でのジョブの監視と監視 - Azure Databricks UI では、ジョブの所有者や最後の実行の結果などの詳細を表示したり、ジョブのプロパティでフィルター処理したりできます。 ジョブの実行履歴を表示し、ジョブ内の各タスクに関する詳細情報を取得できます。
ジョブ実行の状態とメトリック - Databricks は、ジョブの実行の成功を報告し、ジョブ実行内の各タスクのログとメトリックを報告して、問題を診断し、パフォーマンスを把握します。
通知とアラート - メール、Slack、カスタム Webhook、その他のオプションのホストを使用して、ジョブ イベントの通知を設定できます。
システム テーブルを介したCustom クエリ - Azure Databricksは、アカウント全体のジョブの実行とタスクを記録するシステム テーブルを提供します。 これらのテーブルを使用して、ジョブのパフォーマンスとコストのクエリと分析を行うことができます。 ダッシュボードを作成してジョブのメトリックと傾向を視覚化し、ワークフローの正常性とパフォーマンスを監視できます。
制限事項
次の制限があります。
- 1 つのワークスペースでのタスクの同時実行は、2000 に制限されています。 すぐに開始できない実行を要求した場合は、
429 Too Many Requests応答が返されます。 - 1 時間に 1 つのワークスペースで作成できるジョブの数は、10000 に制限されます ("実行の送信" を含む)。 この制限は、REST API およびノートブック ワークフローによって作成されるジョブにも影響します。
- ワークスペースには、最大 12,000 個の保存済みジョブを含めることができます。
- ジョブには、最大 1,000 個のタスクを含めることができます。
- タスクがパラメーターに動的値を使用する場合、ジョブ パラメーターは 10,000 文字に制限されます。
プログラムでワークフローを管理する
Databricks には、ワークフローをプログラムでスケジュールおよび調整できるようにする、次のようなツールと API があります。
ツールと API を使用してジョブを作成および管理する例については、「ジョブの作成と管理の自動化」を参照してください。 使用可能なすべてのdeveloper toolsに関するドキュメントについては、開発者ツールユース ケースを参照してください。
外部ツールでは、Databricks ツールと API を使用して、プログラムによってワークフローをスケジュールします。 Azure Data Factoryや Apache AirFlow などのツールを使用してジョブをスケジュールできます。
Apache エアフローを使用したワークフロー オーケストレーション
Apache Airflow を使用すると、データ ワークフローを管理およびスケジュールできます。 エアフローでは、ワークフローをPythonファイルで定義し、エアフローはワークフローのスケジュール設定と実行を管理します。 「Apache エアフローを使用した Lakeflow ジョブをオーケストレーションする」を参照してください。
Azure Data Factoryによるワークフローオーケストレーション
Azure Data Factory (ADF) は、データ ストレージ、移動、および処理サービスを自動データ パイプラインに作成できるクラウド データ統合サービスです。 ADF を使用して、ADF パイプラインの一部としてAzure Databricks ジョブを調整できます。
ADF には、ADF パイプライン内の JAR にパッケージ化された Databricks ノートブック、Python スクリプト、またはコードを実行するためのサポートも組み込まれています。
ADF パイプラインで Databricks ノートブックを実行する方法については、「 Azure Data Factory で Databricks ノートブック アクティビティを使用して Databricks ノートブックを実行し、次に Databricks ノートブックを実行してデータをTransform データを実行する」を参照>。
ADF パイプラインでPython スクリプトを実行する方法については、Azure Databricks でPython アクティビティを実行して
ADF パイプラインで JAR にパッケージ化されたコードを実行する方法については、Azure Databricks で JAR アクティビティを実行して