2016-01-14 36 views
7

我們有一個流事件源,每秒有數千個事件,這些事件都標有一個ID,標識我們事件所屬的成千上萬個客戶中的哪一個。我們希望使用此事件源來填充數據倉庫(以流模式),但是,我們的事件源不是持久的,所以我們還想將原始數據存檔在GCS中,以便通過我們的數據重播它倉庫管道,如果我們做出需要它的改變。由於數據保留要求,我們堅持的任何原始數據都需要由客戶進行分區,以便我們可以輕鬆地將其刪除。將數據流管道的輸出寫入分區目標

在Dataflow中解決這個問題最簡單的方法是什麼?目前我們正在使用自定義接收器創建一個數據流作業,將數據寫入GCS/BigQuery上的每個客戶的文件,這是否合理?

回答

1

爲了指定文件名和路徑,請參見TextIO documentation。你會提供文件名/路徑等到輸出作家。

對於您的多輸出文件的使用情況,您可以使用Partition函數從單個源PCollection中創建多個PCollections

+0

我不認爲我看到任何有關如何在這裏對輸出進行分區的東西,我錯過了什麼嗎? – Narek

+0

您可以使用您可用的數據爲文件名/路徑構建字符串。所有這些都是正確構建管道的問題,以便在要構建輸出目錄/文件名時可以使用數據。 – Nick

+0

問題是TextIO.Write只需要一個PCollection,並且在一個PCollection中,我有對應於數百個分區的行。 – Narek