注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Builds

Build は Foundry で datasets の新しいバージョンを計算するためのメカニズムです。Builds は計算のオーケストレーションとコーディネーションを提供し、適切な入力データを読み取り、出力データを適切な場所に書き込みます。

Build は jobs で構成され、それぞれが共有ロジックによって定義される作業単位であり、1 個以上の出力データセットを計算します。ジョブが複数の出力データセットを定義する場合、それらは常に一緒に更新され、ジョブ全体を実行せずにデータセットの一部だけをビルドすることはできません。ジョブ仕様、または JobSpec は、ジョブの構築方法を定義するものです。JobSpecs は、たとえばデータエンジニアが Code Repository に新しいトランスフォームコードをコミットするなど、Foundry でデータ変換ロジックに変更が加えられたときに公開されます。

ビルドを実行すると、一連の出力データセットの一度限りの計算が行われます。システム内でデータの流れを維持するために、schedules を使用してビルドを定期的に実行します。

Builds アプリケーション を使用して Foundry 内のビルドを探索できます。

Jobs と JobSpecs

job は、一連の入力データセットのデータから 1 個以上の 出力データセット の新しいバージョンを計算するものです。JobSpec は、入力データセットの依存関係と、ジョブの一部として実行されるロジックの詳細を示してジョブを構築する方法を定義します。

入力データセットの依存関係は、一連の InputSpecs として宣言され、それぞれが特定の入力データセットを指定します。InputSpecs は、データセットのビューに関して読み取るデータのサブセットを指定します。

Foundry では多くの種類のロジックがジョブとして表現される可能性がありますが、以下に限りません:

  • Data Connection Sync は、外部データソースからデータをどのように読み取るかを定義します。
  • Code Repository に書かれたトランスフォームは、データセットをトランスフォームするコードを記述できます。
  • Health checks は、データセットの特性を検証するためにデータセット上で生成されたジョブとして定義されます。
  • Analytical applications は、データセットをトランスフォームするロジックを定義するのをサポートします。
  • export は、入力データを Foundry の外部に送信する方法を定義します。

Job states

任意の時点で、ジョブは以下のいずれかの状態にあります:

  • WAITING: ジョブの初期状態です。依存するジョブが完了するのを待っており、まだ実行されていません。
  • RUN_PENDING: ジョブは実行待ちですが、実行環境はまだステータスを確認していません。
  • RUNNING: ジョブが呼び出され、現在計算中です。
  • ABORT_PENDING: ジョブが中断されましたが、実行環境はまだ中断されたステータスを確認していません。
  • ABORTED: ジョブはユーザーの要求に応じて、または依存ジョブの失敗の結果として中断されました。
  • FAILED: ジョブが呼び出されましたが、計算が失敗しました。
  • COMPLETED: ジョブが呼び出され、計算が正常に終了しました。

Build life cycle

ビルドが実行されると、送信されたビルドを検証し、データの一貫性を確保し、新しい出力を生成するために必要なジョブのみを実行するために、いくつかのステップが実行されます。

Build resolution

最初のステップとして、ビルドは以下のことを行います:

  • 指定された入力データセットにサイクルが存在するかを検出し、サイクルが存在する場合はビルドに失敗します。
  • すべての入力データセットが存在することを検証し、各入力データセットの適切なスキーマを特定します。
  • 各出力データセットに新しい transactions を開始し、アクティブなビルドのみが出力データセットに書き込めるようにします。これは build locking として知られています。
  • 入力データを変更する他のビルドが進行中であるかどうかを検出します。そうであれば、ビルドは queued され、他のビルドが完了するのを待つ場合があります。

Job execution

上記のステップが完了すると、ビルド内のジョブが実行されます。互いに依存しないジョブは並行して実行されます。ジョブが job states を進むと、全体のビルドの状態がそれに応じて更新されます:

  • ビルド内のジョブが失敗した場合、そのビルド内のすべての直接依存ジョブと出力データセットのトランザクションが終了します。オプションで、すべての非依存ジョブを同時に中断するようにビルドを構成できます。
  • ビルド内のすべてのジョブが完了すると、そのビルドは完了と見なされます。

ビルド内のジョブが失敗した場合、以前に完了したジョブはその出力データセットにデータを書き込んでいる可能性があることに注意してください。

Staleness

出力データセットは、build resolution ステップが、入力データセットと JobSpec 内で指定されたロジックが前回の出力データセットのビルド以降変更されていないと判断した場合に 新鮮 であると見なされます。出力データセットが新鮮である場合、それは後続のビルドで再計算されません。

ビルドシステムのデフォルトの古さの動作を上書きするには、force build を実行して、すでに最新であるかどうかに関係なく、ビルドの一部としてすべてのデータセットを再計算できます。

Branching

Foundry のビルドは branching を実装して、データパイプラインの共同作業ワークフローをサポートします。Branching についてさらに学ぶには:

  • 高レベルの説明については branching overview を参照してください。
  • ビルドにおけるブランチングの詳細については branching in builds セクションを参照してください。

Live logs

ライブログは、実行中のジョブへのリアルタイムの可視性を提供し、ジョブの進行状況を監視し、ストリームや計算モジュールなどの長時間実行されるタスクを検査することができます。

Builds アプリケーションのライブログビュー。

ライブログには Builds アプリケーションを通じてアクセスできます。ジョブを表示する際、ログビューワーの右上隅にある View live ボタンを選択して生成を開始します。

Builds アプリケーションのジョブのログビューワーページからの "View live" オプション。

ライブログの主要な機能の 1 つは、ログレベルごとの組み込みの色分けであり、警告やエラーを特定して優先順位をつけやすくします:

ライブログフィードでのさまざまな色分けインジケーターの例。

  • Info:
  • Fatal/Error:
  • Warn: オレンジ
  • Debug/Trace: 灰色

さらに、安全なパラメーターとパラメーターは JSON ブロックとして表示され、データの構造化された読みやすい形式を提供します。

ライブログフィードからの "Format as JSON" オプション。

インターフェースの右上から Pause を選択することで、任意の時点でライブログフィードを停止し、同じ場所から再開できます。

ライブログフィードからの "Pause" オプション。

時間範囲の選択はライブログには適用されないことに注意してください。ジョブからリアルタイムでストリーミングされます。

有効にすると、ライブログがインターフェースに表示されるまでに 10 秒の遅延が発生する場合があります。