2017-02-10 12 views
0

私は、入力がデータベースからの大きな読み込みであるデータフローを持っています。私はこのクエリを分割し、ジョブが開始されたときに複数のホストから実行したいと思います。私が知る限り、BoundedSourceには入力分割を直接制御する方法がありません。それに最も近いのはsplitIntoBundlesです。これは、基本的には非常に高価な読み込みを開始しなければならないことを意味し、Dataflowはそれをキャンセルし、代わりに定義されたバンドル分割を使用します。これはかなり狂っているようですので、リモートワーカーで実行できる入力分割を事前定義するより良い方法があることを期待しています。有界ソース分割を制御する方法は?

+0

あなたはどのデータベースを読んでいますか? Big Queryにクエリしていますか?または、カスタムソースを作成しましたか? – Pablo

+0

私はMongoから読んでいます。カスタムソースを実装しました。 – Max

+0

ビームコードを見ると、splitIntoBundlesを実装しているMongoDBソースがあるようです。おそらく、あなたはこの実装を探ることができますか? https://github.com/apache/beam/blob/master/sdks/java/io/mongodb/src/main/java/org/apache/beam/sdk/io/mongodb/MongoDbIO.java#L226 – Pablo

答えて

1

多くの研究の結果、単一のリーダーの分割並列性を制御する方法はありません。私の解決策は、複数のリーダーを作成し、各リーダーが独自のPCollectionを読み込み、複数のPCollectionを1つのPCollectionにまとめることでした。

関連する問題