2016-01-27 52 views
5

我是一個新手,試圖瞭解我們可能會重新寫一批ETL過程到谷歌數據流。我讀過一些文檔,運行幾個例子。複雜的加入谷歌數據流

我建議新的ETL過程由商業事件驅動(即源PCollection)。這些將觸發該特定商業實體的ETL過程。 ETL過程將從源系統中提取數據集,然後將這些結果(PCollections)傳遞到下一個處理階段。處理階段將涉及各種類型的聯合(包括笛卡爾和非關鍵聯結,例如日期結合)。

所以一對夫婦的問題在這裏:

(1)是我提議有效&有效的辦法?如果不是更好,我還沒有看到任何關於使用Google Dataflow的真實複雜ETL過程的演示,只有簡單的場景。

是否有更適合的「更高級」ETL產品?我一直在關注Spark和Flink。

我們目前的ETL雖然只有大約30個核心表(經典的EDW維度和事實)以及〜1000個轉換步驟,但是中等複雜。源數據很複雜(大約150個Oracle表)。

(2)複雜的非關鍵連接,這些如何處理?

我明顯被Google Dataflow吸引,因爲它首先是一個API,並行處理功能看起來非常合適(我們被要求從批處理過夜轉移到增量處理)。

這個用例的數據流的一個很好的例子會真正推動採用!

謝謝, 邁克小號

回答

6

這聽起來像數據流將是一個不錯的選擇。我們允許您編寫一個管道,該管道需要執行業務事件的PCollection並執行ETL。管道可以是批處理(定期執行)或流式處理(只要輸入數據到達就執行)。

各種聯接大部分在Dataflow中都比較明顯。對於直角座標產品,可以使用side inputs來查看PCollection的內容,作爲處理另一個PCollection中的每個元素的輸入。

你也可以看看使用GroupByKeyCoGroupByKey來實現連接。這些扁平化多個輸入,並允許在同一個地方使用同一個鍵訪問所有值。您還可以使用Combine.perKey來計算與鍵關聯的所有元素(例如,SUM,MIN,MAX,AVERAGE等)的關聯和交換組合。

日期結合加入聲音好像它們很適合windowing,它允許您編寫一個消耗數據窗口的管道(例如,小時窗,每日窗,每天滑動的7天窗等等)。 )。


編輯:提起GroupByKeyCoGroupByKey