2017-05-24 3 views
-2

私はインターネットにファイルをアップロードしているPython beam.DoFnを持っています。このプロセスでは、1つのコアの100%が〜5秒間使用されてから、2〜3分間ファイルがアップロードされます(アップロード中にCPUのごく一部が使用されます)。Google Cloud DataflowはIOバインドされたプロセスを最適化しますか?

DataFlowは、別のスレッド/プロセスで複数のDoFnをスピンアップすることでこれを最適化するのに十分なスマートなのでしょうか?

答えて

0

はいDataflowは、Pythonマルチプロセッシングを使用してDoFnの複数のインスタンスを実行します。

ただし、GroupByKeyを使用すると、ParDoは特定のキーの要素を順番に処理することに注意してください。あなたは一度に複数のキーを処理しているので、あなたは依然として作業者の並列性を達成しています。ただし、すべてのデータが単一の「ホットキー」に含まれていると、良好な並列性が得られないことがあります。

TextIO.Writeをバッチパイプラインで使用していますか?あなたのメインのDoFnが処理された後、ファイルがローカルで準備されてアップロードされたと私は信じています。つまり、ファイルがPCollectionが完了し、より多くの要素を受け取るまでアップロードされません。

要素を生成するときにファイルをストリームアウトするとは思われません。

関連する問題