Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

BeamのDoFn/SimpleFunction/SerializableFunction

More than 1 year has passed since last update.

DoFn/SimpleFunction/SerializableFunctionは、Beamの抽象クラス/インターフェイスです。
機能が似ており、時々忘れるのでメモです。

DoFn

説明

ParDo.ofの引数に指定してTransformを定義するためのクラスです。
アノテーションを設定し制御することが出来ます。

  • ProcessElement
    • 入力から出力の変換処理(任意の数の出力)。
  • StartBundle/FinishBundle
  • Setup/Teardown

DoFnが満たすべき性質などについて、ParDoのドキュメントに補足が記載されています。

  • シリアライザブル
  • グローバルな状態を持たない
    • なんかやり取りしたい時はPCollection通してやろう
  • フォールトトレランス性
    • 再実行されることはありうるので、冪等になるようなDoFnにしよう
    • (無理な時はDoFnの外側のどこかで、カバーする必要)
  • 最適化
    • Beam RunnerがParDo同士をくっつけて(fusion)、最適化することもあるよ
    • くっつけやすいように、また、プログラムが理解しやすいように、DoFnは一つのタスクだけに集中した方がよい
    • Dataflowのfusionの説明

使用例


SimpleFunction

説明

名前の通り、シンプルなメソッドを定義する抽象クラスです。

使用例


SerializableFunction

説明

  • 名前の通り、Serializableである必要があります
  • さらに検査例外を投げることも出来ません

使用例

  • FileIO#by
    • 動的に送り先を指定するメソッドです
notrogue
ただのプログラマー
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away