注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry では主に3種類のパイプラインを作成できます。それぞれ、次の基準に応じて異なるトレードオフがあります。
パイプラインには次の3種類があります。
以下では、各種類のパイプライン、そのトレードオフ、およびその種類のパイプラインの開発をはじめる方法について説明します。参照しやすいように、前述のトレードオフに基づいてパイプラインの種類をまとめたテーブルを示します。
Foundry は、バッチパイプラインとインクリメンタルパイプラインの高速バージョンも提供しています。これらはパフォーマンスを向上させられますが、標準のパイプラインで利用可能な式やデータ加工の一部をサポートしていません。
バッチパイプラインでは、上流のデータが変更されるたびに、パイプライン内のすべてのデータセットが完全に再計算されます。すべてが再計算されるため、パイプライン全体のパフォーマンスは長期にわたって非常に安定しており、コードや保守の複雑さも控え目に抑えられます。より多くのユーザーがバッチパイプラインの開発に参加できるよう、SQL を含む幅広い言語やツールが利用可能です。
前述の基準に基づいてバッチパイプラインを検討すると、次のようになります。
ほとんどの場合、Foundry でのパイプライン開発はバッチパイプラインの作成からはじめ、パイプラインのユースケースが検証されるにつれて、インクリメンタル計算に対応するよう拡張することを推奨します。多くの場合、特にデータ規模が小さい場合(たとえば、数千万行未満)、バッチパイプラインをそのまま使い続けられます。
将来的にパイプラインをインクリメンタルにする必要があると予想される場合は、バッチパイプラインの開発に Python または Java を使用することを推奨します。これらの言語はインクリメンタル計算をサポートしているためです。
Pipeline Builder でバッチパイプラインを作成する方法を学ぶか、ほかの言語のチュートリアルに沿って進めることで、開発をはじめられます。
Pipeline Builder は現在、高速パイプラインをサポートしており、特定の条件下で実行を高速化できます。高速パイプラインは、Rust ↗ で記述されたオープンソースのクエリエンジンである DataFusion ↗ を基盤とするバックエンドを使用します。従来の Spark ベースのパイプラインと比較して、高速パイプラインは小規模から中規模のデータセットの計算処理を大幅に高速化できます。
高速パイプラインは、以前は軽量パイプラインと呼ばれていました。「軽量」という用語は、扱うデータのサイズではなく、これらのパイプラインの実行に必要な時間と計算リソースが少ないことを意味していました。名称の変更は、大規模なデータセットであっても、高速パイプラインが実行時間と計算リソースの使用量の両方を削減することを反映しています。
高速パイプラインを最初から作成することも、既存のバッチパイプラインやインクリメンタルパイプラインを高速パイプラインに変換することもできます。Pipeline Builder の高速パイプラインの詳しくはこちら
インクリメンタルパイプラインでは、前回のビルド以降に変更されたデータの行またはファイルだけが計算されます。これは、イベントデータや、時間の経過とともに大量のデータが変化するほかのデータセットの処理に適しています。全体の計算量を削減するだけでなく、バッチパイプラインと比較して、パイプライン全体の遅延を大幅に削減できます。インクリメンタル計算で利用可能なのは、Python と Java の API のみです。
前述の基準に基づいてインクリメンタルパイプラインを検討すると、次のようになります。
インクリメンタルパイプラインの詳細については、次のリソースを参照してください。
ストリーミングパイプラインでは、Foundry にストリーミングされる新しいデータを処理するためにコードが継続的に実行されます。これにより、最も低い遅延を実現できますが、複雑さとコンピューティングコストは最も高くなります。一般に、ストリーミングパイプラインは、コンピューティングジョブの管理よりもマイクロサービスの管理に近いものとして捉えると理解しやすくなります。ストリーミングパイプラインを正常に稼働させるには、稼働時間、回復力、ステートフルな操作について十分に考慮する必要があります。
上記の基準に沿ってストリーミングパイプラインを評価すると、次のようになります。
ほとんどの場合、ユースケースで非常に低い遅延が求められない限り、ストリーミングパイプラインの作成は避けるのが最善です。インクリメンタルパイプラインは、多くの場合、エンドツーエンドの遅延を分単位に抑える性能を実現できます。そのため、ストリーミングパイプラインに伴う複雑さやコンピューティングコストの増加を避けながら、ほとんどのニーズを満たせます。
ストリーミングパイプラインについての詳しくはこちらのリソースを参照してください。
ストリーミングパイプラインに関する追加のドキュメントは、近日中に利用可能になります。ストリーミングパイプラインの構築に関心がある場合は、Palantir の担当者にお問い合わせください。