5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

BeamのDoFn/SimpleFunction/SerializableFunction

Posted at

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

DoFn

説明

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

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

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

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

使用例


SimpleFunction

説明

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

使用例


SerializableFunction

説明

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

使用例

  • FileIO#by
  • 動的に送り先を指定するメソッドです
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?