注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
このチュートリアルでは、Pipeline Builder を使って、単一のデータセットを出力するシンプルなインクリメンタルパイプラインを作成します。
以下で使用されるデータセットは、インクリメンタル計算が適用可能であることを示すための仮想的な例です。
flights
という入力データセットがあり、毎週新しいデータが追加されると仮定しましょう。JFK
空港を出発するフライトのみをフィルター処理して、それらのフライトを出力 filtered_flights
に追加したいとします。
flights
データセットが 2000 万行あるとしましょうが、毎週 100 万行ずつ追加されます。インクリメンタル計算では、パイプラインは flights
のすべての行ではなく、最新の未処理トランザクションのみを考慮する必要があります。
パイプラインが定期的に実行される場合、インクリメンタル処理によって各実行のデータスケールが大幅に削減され、時間とリソースが節約されます。
それでは、インクリメンタルパイプラインの設定方法を見ていきましょう。
まず、すべてのインクリメンタル制約が満たされていることを確認します。
flights
は、APPEND
トランザクションまたは既存のファイルを変更しない UPDATE
トランザクションによって更新されます。flights
から filtered_flights
を計算するロジックは、後のビルドで filtered_flights
に書き込まれたデータを変更する必要がありません。
LGA
空港を出発するフライトも含める場合)、パイプラインを更新できます。以前に処理されたフライトにそのロジックを適用したい場合は、パイプラインをリプレイすることを検討してください。Pipeline Builder のインクリメンタル計算に関する制約の完全なリストについては、制約を参照してください。
ここで、新しいパイプラインを初期化できます(手順の詳細については、Pipeline Builder でバッチパイプラインを作成するを参照してください)。入力データセットとして flights
をインポートしたと仮定します。
まず、データセットの下にあるボタンを使って、入力データセットを Incremental にマークします。右上隅に青いバッジが表示されることで変更がわかります。
次に、JFK
空港を出発するフライトに flights
をフィルター処理する変換を追加します。データセット入力の右にある Incremental input のツールチップでラベル付けされたアイコンに注意してください。下流の変換には、インクリメンタル処理されていることを示すこのアイコンが表示されます。
グラフ上では、下流のノードに入力と同じ青いバッジが表示されます。
最後に、出力データセット filtered_flights
を追加します。
これで、パイプラインをデプロイする準備が整いました。
場合によっては、以前の入力トランザクションを再処理する必要があります(たとえば、ロジックが変更され、以前のバージョンの出力データが古くなった場合)。このような場合、Replay on deploy を選択して、入力全体をパイプラインロジックに通すことができます。リプレイ後、パイプラインは入力に新しい追加トランザクションが追加されると、インクリメンタル計算を続ける必要があります。
デプロイ時のリプレイは、出力データセットに SNAPSHOT
トランザクションを生成します。