嗨按KV Pcollection上的鍵執行組後,我需要: - 1)使該PCollection中的每個元素成爲單獨的獨立PCollection。 2)將這些單獨的PCollections中的記錄插入到BigQuery表中。 基本上我的意圖是在BigQuery表中創建一個動態日期分區。 我該怎麼做? 一個例子真的有幫助。分割KV <K,V> PCollection分成多個PCollections
回答
對於Google Dataflow能夠執行大規模並行化(作爲公共雲上的服務),作業流程需要在提交到Google雲端控制檯之前進行預定義。每次執行包含管道選項和變換的jar
文件時,都會創建一個帶有作業描述的json
文件並將其提交到Google雲平臺。託管服務然後使用它來執行您的工作。
對於問題中提到的用例,它要求將輸入PCollection
拆分爲儘可能多的PCollection
,因爲它們是唯一的日期。對於拆分,需要動態創建拆分集合所需的元組標籤,這在目前是不可能的。動態創建元組標籤是不允許的,因爲這無助於創建作業描述文件,並且勝過構建數據流的整個設計/目的。
我能想到的幾個解決方案,對這個問題(兩者都具有其自身的優點和缺點):
解決方案1(對於確切的使用情況下,問題的解決方法):
寫數據流轉換,是以輸入PCollection
和輸入中的每個元素 -
1. Checks the date of the element.
2. Appends the date to a pre-defined Big Query Table Name as a decorator (in the format yyyyMMDD).
3. Makes an HTTP request to the BQ API to insert the row into the table with the table name added with a decorator.
你將不得不考慮這一做法,因爲t時的成本角度這裏是針對每個元素的單個HTTP請求,而不是BQ加載作業,如果我們使用了BigQueryIO數據流sdk模塊,就可以做到這一點。
解決方案2(應該遵循這些類型的用例的最佳實踐):
1. Run the dataflow pipeline in the streaming mode instead of batch mode.
2. Define a time window with whatever is suitable to the scenario in which it is being is used.
3. For the `PCollection` in each window, write it to a BQ table with the decorator being the date of the time window itself.
你將不得不考慮重新構建數據源將數據發送到數據流的實時,但你將有一個動態的日期分區大查詢表,其數據處理結果接近實時。
參考 -
- Google Big Query Table Decorators
- Google Big Query Table insert using HTTP POST request
- How job description files work
注:請提意見,如果需要,我會闡述了答案的代碼片段。
感謝您的回覆@paritosh ...將嘗試使用第一個選項來實現...第二個選項是不成問題的,因爲無法在流模式下運行管道... 但是,如果您遇到任何其他方式這請允許我知道或者如果我確實會確保發佈它... – rish0097
Sure @ rish0097 :) –
- 1. VB.NET - 分割成多個分割號碼
- 2. 分割數據幀分成多個DF
- 3. 分割我的代碼分割成多個文件在Python 3
- 4. 分割文件分割成多個文件
- 5. 谷歌數據流 - 創建多個PCollection一個PCollection <TableRow>< TableRow >
- 6. 將圖片分割成多個圖片
- 7. 將庫分割成多個包
- 8. JSON分割成多個文件
- 9. 將一個Git存儲庫分割成多個分支成爲分支
- 10. 顏色分割:一個更好的聚類分析,找到K
- 11. 如何在Google數據流管道中從多個輸入PCollections生成一個輸出PCollection?
- 12. 拆分一個javascript命名空間分割成多個文件
- 13. 分割線分成5列
- 14. 將ListView分割成部分
- 15. 正則表達式將字符串分割成多個部分
- 16. 如何將C++控制檯屏幕分割成多個部分?
- 17. 將分段的MP4分割成多個MP4文件
- 18. r分割的列分成多個列通過圖案
- 19. 將色環分割爲多個部分
- 20. 分割具有多個分離器
- 21. 分割由多個字符
- 22. 分割數成組
- 23. 將文本文件分割成多個文件
- 24. 如何重新洗牌PCollection <T>?
- 25. Progammatically分割路徑成多條路徑
- 26. 將圖像分割成多張圖像
- 27. SQL: - 將sql行分割成多行
- 28. 我怎樣才能將Coq中的``I'< S k -> H`分成`i <k和i = k`?
- 29. 分割列表<Product>成子列表<Product>
- 30. FLASK,一個HTML與長輸入形式分成兩個或多個分割htmls
到目前爲止,您嘗試了什麼? –
我試過分區,但無法生成它們的PCollections,我可以使用側輸出,但因爲我們必須預先聲明元組標記,所以我不考慮這樣做,因爲根據數據源中的數據量和記錄的日期,可以有N個元組標籤。 – rish0097
具體而言,假設我有一個文件有內容: 1 ABC 1991-07-18 2 DEF 1992-08-15 3 FGH 2015-01-01 4 IJK 2016-03-10 5 XYZ 1992-08-15 我想通過使用數據流在每個不同的日期創建動態分區,將這些數據放入BigQuery表中。 – rish0097