2016-01-14 10 views
7

1秒間に何千ものイベントが発生する単一のストリーミングイベントソースがあります。これらのイベントには、何万人の顧客がイベントに属しているかを識別するIDが付いています。このイベントソースを使用して(ストリーミングモードで)データウェアハウスを作成したいと考えていますが、イベントソースは永続的ではありませんので、GCSでアーカイブしてデータを再生することもできますそれを必要とする変更を行う場合は、倉庫パイプラインを使用します。データ保持要件のため、永続化する生データはすべて顧客によって分割する必要があるため、簡単に削除することができます。データフローパイプラインの出力をパーティション化された宛先に書き込む

データフローでこれを解決する最も単純な方法は何ですか?現在、GCS/BigQueryの顧客ごとのファイルにデータを書き込むカスタムシンクを使用してデータフロージョブを作成していますが、これは合理的ですか?

答えて

1

ファイル名とパスを指定するには、TextIO documentationを参照してください。出力ライターにファイル名/パスなどを指定します。

複数の出力ファイルを使用する場合は、Partition関数を使用して、単一のソースPCollectionから複数のPCollectionsを作成することができます。

+0

ここで出力をどのように分割するかはわかりませんが、何か不足していますか? – Narek

+0

利用可能なデータを使用して、ファイル名/パスの文字列を構成できます。パイプラインを適切に構築して、出力ディレクトリ/ファイル名を作成するときにデータを利用できるようにすることがすべての問題です。 – Nick

+0

問題は、TextIO.WriteはPCollectionだけをとり、1つのPCollection内では何百ものパーティションに対応する行があることです。 – Narek