2016-01-27 11 views
5

Google DataflowにバッチETLプロセスを書き直す方法を理解しようとする初心者です。私はいくつかのドキュメントを読んで、いくつかの例を実行します。Googleのデータフローとの複雑な結合

私は、新しいETLプロセスがビジネスイベント(つまり、ソースPCollection)によって駆動されることを提案しています。これらは、特定のビジネスエンティティのETLプロセスを起動します。 ETLプロセスは、ソースシステムからデータセットを抽出し、その結果(PCコレクション)を次の処理ステージに渡します。処理段階は、様々なタイプの結合(デカルトなどのデカルトおよび非キー結合を含む)を含む。

だからここに質問のカップル:

(1)私は&有効で効率的な提案だなアプローチはありますか?もっとうまくいかない場合は、Google Dataflowを使用した現実の複雑なETLプロセスのプレゼンテーションを見て、簡単なシナリオだけを見ていない。

ETL製品の中には、「より高いレベル」のものがありますか?私はSparkとFlinkをしばらく見守ってきました。

現在のETLは中程度に複雑ですが、約30のコアテーブル(従来のEDWディメンションとファクト)と約1000の変換ステップしかありません。ソース・データは複雑です(約150のOracle表)。

(2)複雑な非キー結合は、どのように処理されますか?

私は明らかにAPIであるため、Google Dataflowに魅了されています。並列処理機能は非常に適しています(バッチ処理から増分処理に移行するよう求められています)。

このユースケースのデータフローの優れた実例は、実際に採用を推進します。それは、データフローのように聞こえる

おかげで、 マイク・S

答えて

6

はぴったりでしょう。 PCollectionのビジネス・イベントを受け取り、ETLを実行するパイプラインを作成することができます。パイプラインは、バッチ(定期的に実行)またはストリーミング(入力データが到着するたびに実行される)のいずれかです。

さまざまな結合は、ほとんどがデータフローで比較的表現可能です。デカルト製品の場合、PCollectionの各要素の処理の入力としてPCollectionの内容を利用できるように、side inputsを見ることができます。 またはCoGroupByKeyを使用してジョインを実装することもできます。これらは複数の入力を平坦化し、同じキーを持つすべての値に1か所でアクセスすることを可能にします。 Combine.perKeyを使用して、キーに関連付けられたすべての要素(SUM、MIN、MAX、AVERAGEなど)の関連および可換の組み合わせを計算することもできます。

日付バンドの結合は、windowingに適しているように聞こえます。これにより、データのウィンドウ(たとえば、時間別ウィンドウ、毎日ウィンドウ、毎日スライドする7日間のウィンドウなど)を消費するパイプラインを作成できます。 )。


編集:GroupByKeyCoGroupByKeyに言及。

関連する問題