bugfix> java > 投稿

Javaを使用してApache Beamでストリーミング要素を処理することについて読んでいるときに、 DoFn<InputT, OutputT> に出会いましたそして、 SimpleFunction<InputT, OutputT> 全体で 。

これらはどちらも私に似ており、違いを理解するのは難しいと感じています。

誰かが素人用語の違いを説明できますか?

回答 1 件
  • 概念的には、 SimpleFunction を考えることができます   DoFn の単純なケースです :

    SimpleFunction<InputT, OutputT>

    出力マッピング関数への単純な入力。

    単一入力は単一出力を生成します。

    静的に型付けされた、あなたは @Override する必要があります   apply()  方法;

    計算コンテキストに依存しません。

    ビーム状態APIを使用できません。

    ユースケースの例: MapElements.via(simpleFunction)  要素を1つずつ変換/変更し、要素ごとに1つの出力を生成します。

    DoFn<InputT, OutputT>

    ParDo で実行 ;

    コンテキスト(タイムスタンプ、ウィンドウペインなど)に公開されます。

    副入力を消費できます。

    複数の出力を生成することも、まったく出力しないこともできます。

    副出力を生成できます。

    Beamの永続状態APIを使用できます。

    動的に入力されます。

    ユースケースの例:ストリームからオブジェクトを読み取り、フィルタリングし、それらを蓄積し、集約を実行し、それらを変換し、異なる出力にディスパッチします。

    ParDos のより具体的な例とユースケースを見つけることができます  開発者ガイドで。

    この部分は MapElements について言及しています 、これは SimpleFunctions の使用例です

あなたの答え