Introduction to Databricks Workflows | Databricks on AWS [2023/7/3時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricksワークフローは、Databricksレイクハウスプラットフォームでデータ処理、機械学習、分析パイプラインをオーケストレートします。ワークフローには、Databricksワークスペースでインタラクティブ性を持たないコードを実行するためのDatabricksジョブ、高信頼かつ維持可能なETLパイプラインを構築するためのDelta Live Tablesがインテグレーションされたフルマネージドのオーケストレーションサービスを提供します。
Databricksレイクハウスプラットフォームによるワークフローのオーケストレーションのメリットに関しては、Databricks Workflowsをご覧ください。
Databricksワークフローの例
以下の図では、以下を行うためにDatabricksによってオーケストレートされているワークフローを説明しています:
- クラウドストレージから生のクリックストリームデータを取り込み、データをクレンジング準備し、データのセッション化を行い、Delta Lakeに最終的なセッション化されたデータを永続化するDelta Live Tablesパイプラインを実行。
- クラウドストレージから注文データを取り込み、処理のためにデータをクレンジング、変換し、最終的なデータセットをDelta Lakeに永続化するDelta Live Tablesパイプラインを実行。
- 分析のための新たなデータを作成するために、注文データとセッション化されたクリックストリームデータを結合。
- 準備したデータから特徴量を抽出。
- 特徴量を永続化するタスクと機械学習モデルのトレーニングのタスクを並列で実行。
Databricksジョブとは?
Databricksジョブは、Databricksワークフローにおいてデータ処理や分析アプリケーションを実行するための手段です。ジョブは単一のタスク、あるいは複雑な依存関係を持つ大規模なマルチタスクにすることができます。Databricksは、あなたのジョブの全てにおけるタスクのオーケストレーション、クラスター管理、モニタリング、エラーレポートを管理します。ジョブは即時実行、使いやすいスケジューリングシステムを通じた定期実行、外部ロケーションに新規ファイルが到着した際の実行、ジョブが常に稼働し続けることを保証する連続実行が可能です。また、ノートブックUIでインタラクティブにジョブを実行することができます。
Jobs UI、Databricks CLI、Jobs APIを呼び出すことでジョブを作成、実行することができます。UIやAPIを用いて失敗した、あるいはキャンセルされたジョブのリペア、再実行を行うことができます。UI、CLI、APIと通知(メール、webhookの宛先、Slack通知など)を用いてジョブの実行結果を監視することができます。
Databricks CLIについては、Jobs CLI (legacy)をご覧ください。Jobs APIの使い方に関しては、Jobs APIをご覧ください。
以下のセクションでは、Databricksジョブの重要な機能をカバーします。
重要!
- ジョブはData Science & EngineeringワークスペースやMachine Learningワークスペースでのみ作成できます。
- 1つのワークペースにおけるタスクの同時実行数は1000に制限されます。即座に開始できないジョブ実行をリクエストした際には、
429 Too Many Requests
レスポンスが返却されます。 - 1時間あたりワークスペースで作成できるジョブの数は10000に制限されます(
runs submit
を含みます)。また、この制限はREST APIやノートブックワークフローで作成されるジョブにも適用されます。
ジョブタスクを用いたデータ処理と分析の実装
タスクを用いてデータ処理や分析のワークフローを実装します。ジョブは1つ以上のタスクから構成されます。ノートブック、JAR、Delta Live Tablesパイプライン、Python、Scala、Spark submit、Javaアプリケーションを実行するジョブのタスクを作成することができます。また、ジョブタスクは分析や可視化を作成するためにDatabricks SQLのクエリー、アラート、ダッシュボードをオーケストレートしたり、ワークフローでdbt変換処理を実行するためにdbtタスクを使うことができます。また、レガシーなSpark Submitアプリケーションもサポートされています。
タスク間の依存関係を指定することでタスクの実行順序をコントロールすることができます。タスクを直列、並列で実行するように設定できます。
インタラクティブ、連続的、ジョブトリガーを用いたジョブの実行
ジョブのUI、API、CLIからインタラクティブにジョブを実行したり、連続ジョブを実行することができます。ジョブを定期実行するようにスケジュールを作成したり、Amazon S3やAzureストレージのような外部ロケーションに新規ファイルが到着した際にジョブを実行することができます。
通知によるジョブの進捗の監視
ジョブやタスクがスタート、完了、失敗した際に通知を受け取ることができます。1つ以上のメールアドレスやシステムの宛先(webhookの宛先やSlackなど)に通知を送信することができます。Add email and system notifications for job eventsをご覧ください。
Databricks計算リソースを用いたジョブの実行
DatabricksクラスターやSQLウェアハウスは、ジョブの計算資源を提供します。ジョブクラスターやall-purposeクラスター、SQLウェアハウスを用いてジョブを実行することができます。
- ジョブクラスタはジョブや個々のジョブタスク専用のクラスターです。全てのタスクで共有されるジョブクラスターを用いてジョブを実行できますし、タスクを作成、編集する際に個々のタスクごとのクラスターを設定することができます。ジョブやタスクが起動する際にジョブクラスターが起動し、ジョブやタスクが終了するとジョブクラスターは停止します。
- All-purposeクラスターは手動で起動、停止される共有クラスターであり、複数のユーザーやジョブで共有することができます。
リソース使用量を最適化するには、ジョブではジョブクラスターを使うことをお勧めします。クラスター起動を待つ時間を削減するには、all-purposeクラスタの使用を検討してください。ジョブにおけるDatabricks計算資源の活用をご覧ください。
クエリー、ダッシュボード、アラートのようなDatabricks SQLタスクの実行でSQLウェアハウスを使うことができます。また、dbtタスクを用いたdbt変換処理を実行するためにSQLウェアハウスを使うことができます。
次のステップ
Databricksジョブを使い始めるには:
- クイックスタートで最初のDatabricksジョブワークフローを作成します。
- Databricksジョブのユーザーインタフェースを用いてワークフローの作成、実行方法を学びます。
- Databricksジョブのユーザーインタフェースでのジョブ実行の監視方法を学びます。
- ジョブの設定オプションを学びます。
Databricksジョブを用いたワークフローの構築、管理、トラブルシュートを学びます:
- タスクバリューを用いてDatabricksジョブにおけるタスク間の情報のやり取り方法を学びます。
- タスクパラメーター変数を用いてジョブタスクにジョブ実行のコンテキストの渡し方を学びます。
- 失敗したジョブのトラブルシュート、修正方法を学びます。
- ジョブ実行の通知を用いてジョブが開始、完了、失敗した際に通知を受け取ります。
- カスタムスケジュールに基づいたジョブの起動、あるいは連続ジョブを実行します。
- ファイル到着トリガーを用いて、新規データが到着した際にDatabricksジョブを実行する方法を学びます。
- ジョブにおけるDatabricks計算資源の使い方を学びます。
- Databricksジョブのワークフローの作成、管理をサポートするJobs APIアップデートを学びます。
- Databricksジョブを用いたデータワークフローの実装に関するハウツーガイドとチュートリアルを活用します。
Delta Live Tablesとは?
Delta Live TablesはETLとストリーミングデータ処理をシンプルにするフレームワークです。Delta Live TablesはAuto Loaderのビルトインサポートによる効率的なデータ取り込み、データ変換処理の宣言型実装をサポートするSQLやPythonインタフェース、Delta Lakeへの変換データの書き込みサポートを提供しています。データに対して実行する変換処理を定義すると、Delta Live Tablesはタスクのオーケストレーション、クラスター管理、モニタリング、データ品質、エラーハンドリングを管理します。
スタートするには、What is Delta Live Tables?をご覧ください。
DatabricksジョブとDelta Live Tables
DatabricksジョブとDelta Live Tablesは、エンドツーエンドのデータ処理、分析ワークフローの構築、デプロイのための包括的なフレームワークを提供します。
すべてのデータの取り込み、変換処理ではDelta Live Tablesを使いましょう。Delta Live Tablesの取り込み処理、変換処理を含むレイクハウスプラットフォームにおける単一あるいは複数のデータ処理、分析タスクから構成されるワークロードをオーケストレートするためにDatabricksジョブを活用しましょう。
ワークフローのオーケストレーションシステムとして、Databricksジョブは以下もサポートしています:
- スケジュールに基づいたワークフローのように、トリガーベースでのジョブの実行。
- ノートブック、スクリプト、外部ライブラリなどを通じた、SQLクエリー、機械学習、データ分析。
- JARでパッケージされたApache Sparkジョブの実行のような単一タスクから構成されるジョブの実行。
Apache AirFlowを用いたワークフローのオーケストレーション
お使いのデータワークフローをオーケストレートするために、Databricksジョブを活用することはお勧めですが、データワークフローを管理、スケジュールするためにApache Airflowを活用することもできます。Airflowを用いて、Pythonファイルにワークフローを定義すると、Airflowがワークフローのスケジュールや実行を管理します。Orchestrate Databricks jobs with Apache Airflowをご覧ください。