2017-07-19 3 views
0

dataflow sdk 1.xの構文が行ったように、ビームsdk 2.0でカスタム結合関数(推測作業とビームsdk 2.0コードの読み込み後)を作成する方法を理解しましたsdk 2.0では動作しません。beam sdk 2.0でカスタムCombine.PerKeyを作成する方法

しかし、我々はビームSDK 2.0でPER KEY機能を組み合わせたカスタムを作成する方法を見つけ出すことはできません。任意のヘルプまたはポインタ(またはより良い実際の例)をいただければ幸いです。 (私たちはドキュメンテーションや例を探すためにインターネットを調べましたが、ビームsdk 2.0のCombineクラス内のコードを調べようとしましたが、特にPerKeyクラスにプライベートコンストラクタがあるので私たちはもはやそれを拡張することはできません。)

を、それが助け場合は、ここで我々は正しくせずにカスタム・コンバイナ(を作成した方法です)ビームSDK 2.0のキーが、我々は1 を作成する方法を見つけ出すことはできません

public class CombineTemplateIntervalsIntoBlocks 
     extends Combine.AccumulatingCombineFn<ImmutableMySetOfIntervals, TemplateIntervalAccum, ArrayList<ImmutableMySetOfIntervals>>{ 


    public CombineTemplateIntervalsIntoBlocks() { 
    } 

    @Override 
    public TemplateIntervalAccum createAccumulator() { 
     return new TemplateIntervalAccum() 
    } 

、その後

キー付き

答えて

1

Combine.PerKeyを使用するためにCombineFnを別々に作成する必要はありません。

どちら延びるAccumulatingCombineFn(アキュムレータにマージロジックを入れている)又は(CombineFnにマージロジックを入れた)CombineFnを拡張することができます。 BinaryCombineFnIterableCombineFnのような他のオプションもあります。

あなたはcombineFnと呼ばれるCombineFn<InputT, AccumT, OutputT>を持っていると言う:

  • あなたはPCollection<InputT>を取り、すべての要素を兼ね備えたPTransformを作成するためにCombine.globally(combineFn)を使用することができます。
  • Combine.perKey(combineFn)を使用して、を受け取り、各キーに関連付けられたすべての値を結合し、それらを結合するPTransformを作成できます。これはCombine.PerKeyに対応しています。
+0

ベンのソリューションは、上記のように正確に機能しました! –

関連する問題