2016-03-30 5 views
1

データフロー内でPCollection.apply(Write.to(MySink))(非常に簡単にXmlSink.java)を呼び出して、書き込むFileBasedSinkのシンクをカスタマイズしています。しかし、デフォルトでは、単にWrite.toと呼ぶと、常に3つの出力断片になるでしょうか?カスタマイズされたシンククラス定義の中で出力シャード(TextTO.Write.withNumShardsのような)の数を定義できる方法はありますか?または別のものを定義しなければならないPTransformerTextIO.Writeのように?データフローのWrite.to(シンク)に出力シャードの数を設定します。

答えて

0

残念ながら、現在FileBasedSinkはシャード数の指定をサポートしていません。

実際には、あなたが得る断片の数は、あなたが書いているコレクションを生成するパイプラインの部分を最適化するためにフレームワークがどのように選択するかに依存します。

私はあなたのリクエストに応じてa JIRA issueを提出しており、ステータスに登録することができます。

+0

ありがとうございましたjkff、ああ、自分自身に明確にしたい、すべてのカスタマイズされたシンクは、出力シャードの数を制御することはできませんか?あなたの意見では、カスタマイズされたシンクでフレキシブルな出力シャードを可能にするために現在のポイントに行くための最善のルートは何ですか? –

+0

私はこれを達成するための唯一の方法はカスタムシンクAPIなしであると思う:あなたのデータをParDo {データをモジュロnumShards}でパイプする| GBK | ParDo {このファイルのデータを一時ファイルに書き込みます。 finishBundleでは、最終的な場所に原子的に名前を変更します}。 – jkff

+0

しかし、これは動的な仕事の再調整のために多くのサービスでは機能しないことに注意してください –

関連する問題