0

職場の私のチームは現在、かなり高価な ETL ツールの代替品を探しており、この時点で、栄光のスケジューラーとして使用しています。ETL ツールが提供する統合はすべて、独自の Python コードを使用して改善したため、そのスケジューリング機能が本当に必要です。私たちが検討しているオプションの 1 つは、私が現在試験運用している Data Pipeline です。

したがって、私の問題は次のとおりです。製品と販売の 2 つのデータセットを読み込むとします。これらの各データセットを読み込むには、いくつかの手順が必要です (ソース データを取得し、Python スクリプトを呼び出して変換し、Redshift に読み込みます)。ただし、マージンを計算するには製品コストなどが必要なため、販売が開始される前に製品をロードする必要があります。最初に製品を呼び出し、その正常な完了を待ってから販売を呼び出す "マスター" パイプラインを Data Pipeline に持つことは可能ですか? もしそうなら、どのように?Data Pipeline がこのタイプのワークフローに適していない場合は、他の製品の提案も受け付けています。助けに感謝します

4

2 に答える 2

1

これは datapipeline の基本的な使用例であり、間違いなく可能です。このパイプラインの作成には、グラフィカル パイプライン エディターを使用できます。問題の内訳:

次の 2 つのデータセットがあります。

  1. 製品
  2. 販売

これらのデータセットを読み込む手順:

  1. ソースデータを取得する:S3から言ってください。これには、S3DataNode を使用します
  2. Python スクリプトを呼び出して変換します: ステージングで ShellCommandActivity を使用します。Data Pipeline は、ShellCommandActivity にアタッチされた S3DataNodes に対して暗黙的にデータ ステージングを行います。提供された特別な環境変数を使用してそれらを使用できます:詳細
  3. 出力を Redshift にロード: RedshiftDatabase を使用

操作する必要があるデータセット (この場合は製品と販売) ごとに上記のコンポーネントを追加する必要があります。管理を容易にするために、これらをEC2 インスタンスで実行できます。

条件: 「sales」を実行する前に「product」をロードする必要があります

  • dependsOn関係を追加します。Product の ShellCommandActivity を参照する Sales の ShellCommandActivity にこのフィールドを追加します。ドキュメントの dependsOn フィールドを参照してください。「このアクティビティが開始される前に、FINISHED 状態に到達する必要がある他のアクティビティへの 1 つ以上の参照」と表示されます。

ヒント: ほとんどの場合、前日の実行がまだアクティブである (実行中) 間に次の日の実行を開始することは望ましくありません。このようなシナリオを回避するには、「maxActiveInstances」フィールドを使用して「1」に設定します。

于 2015-04-17T19:20:48.857 に答える