LoginSignup
8
5

More than 3 years have passed since last update.

Apache Beam/DataflowのPythonとJava比較

Last updated at Posted at 2019-09-23

tl;dr

(今のところ)JavaのほうがBeam/Dataflowで使える機能多いよ。
けどPythonも良くなっているよ

Streaming

Beam/Dataflowでは、無限に来る入力に対してStreaming処理が出来ます。
Streaming処理はPythonでも書くことは出来ますが、DataflowRunnerでは

などの制限があります。

最近できるようになりました!

他にもいくつかあり、Beamのドキュメントに記載されています。

Dynamic Destination

PCollectionの中身(Pub/Subのメッセージなど)に応じて、出力先(ファイル名とかテーブル名)を変更することを、BeamではDynamic Destinationと呼びます。

Beam 2.14以上でPythonでも出来るようになったのですが、まだExperimentです。
(具体的に機能に差があるかは追えてません…)

組み込みIO

Beam/Dataflowは、組み込みでいくつかの入出力を提供しています
GCSやBigQuery、Pub/SubなどはJavaでもPythonでもサポートされていますが、S3やKinesisなどはJavaだけです。

(自前で書けば出来るかも…)

雑記

  • Java書きたくない…そんなワガママな貴方にはScala+Scioもいいかもしれません。
  • Pythonの未来はPortability Frameworkに期待
    • Spark Runnerなどは、この機能でPythonでも書けるようになった?

事例

日本に限っても、Dataflow/Beam結構つかわれていますね。

Java・Scala

Python

All Aboutさん
リクルートライフスタイルさん

その他(KotlinとかGoとか)

見つけたらコッソリ教えてください

8
5
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
8
5