2016-10-10 9 views
0

私はそのように呼び出す複数のカスタム結合関数を持っています:データフローの作業:関数の結合

私は以前にパイプラインで計算された 'データ'を持っています。

cd1 = data | customCombFn1() 
cd2 = data | customCombFn2() 
cd3 = data | customCombFn3() 

上記の場合、パイプラインはどのように機能しますか? 'データ'は何度も何度も評価されていますか?または、cd1,cd2およびcd3がパイプラインの副産物として評価されていますか?

答えて

3

dataオブジェクトは、PCollectionです。 PCollectionに結合変換を適用すると、他のPCollectionが作成されます。

あなたがそれを呼び出すと、「再評価」はありません。 PCollectionは、通常、複数のワーカーで生成され、必要な変換によって直ちに消費されます。与えられたケースでそれが不可能な場合、通常、後で処理するためにPCollectionが保存されます。

一般に、Cloud Dataflowサービスは、自動的にユーザーのパイプラインに最適化を適用します。これを含むほとんどの場合、ユーザーは基本的な実行の考慮事項ではなく、ビジネスロジックに集中できます。

+0

クラブのカスタムCombFn1、customCombFn2、customCombFn3には、dictアグリゲーターとしての固有の最適化はありません。同じことを記述している論文やブログはありますか?上記のコードは、3つの結合操作があるので、完全なデータを3回通過するのと同じであると仮定しました。 – vin

+0

それはそれより複雑です。データフローサービスは、パイプライン構造に応じて、いくつかのタイプの最適化を適用します。コンバイン変換の一部は、パイプラインの先行部分に「持ち上げられ」たり、並べ替えたり、他の方法で最適化されたりすることがあります。一般に、我々はデータの量を減らし、通常はパイプラインを高速化するので、変換をできるだけ早く組み合わせて実行しようとします。 –

関連する問題