我正在實現一個Dataflow管道,該管道從Pubsub讀取消息,並使用Apache Beam SDK 2.0.0 for Java將TableRows寫入BigQuery(BQ)。寫入BigQuery時在GroupByKey子任務中累積元素Apache beam v2.0
這是代碼的相關部分:
tableRowPCollection
.apply(BigQueryIO.writeTableRows().to(this.tableId)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_NEVER)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND));
該代碼在數據流管道罩下產生一組任務。其中一項任務是GroupByKey。此任務正在積累管道中的元素,可在此打印屏幕中看到: GBK elements accumulation image. 閱讀完文檔後,我懷疑此問題與Window配置有關。但我找不到修改Window配置的方法,因爲它是隱含創建的Window.Assign變換內重洗刷任務。
是否有設置窗口參數和/或附加觸發器這種隱含窗口或者我應該創建自己的DOFN在BQ插入的TableRow的一種方式?
在此先感謝!
[更新]
我離開管道每天運行約,之後的GroupByKey
子任務變得更快,元素的數量進來和走出彼此近似(有時呈一樣)。此外,我還注意到Watermark
接近當前日期並且增長更快。所以這個「問題」就解決了。
問題是什麼? GroupByKey將與特定鍵關聯的值分組。因此,如果你有N個鍵,你會期望N個元素從GroupByKey中出來。你所描述的聽起來像是按預期工作。 –
@BenChambers關鍵是我不想等太久才能在BQ中插入數據。我想選擇在這個子任務中使用的觸發器。 –