首页 > 解决方案 > 排空使用 FILE_LOAD 写入方法的数据流作业是否确保写入所有元素?

问题描述

您正在通过以下方式将元素写入 bigquery:

pcoll.apply(BigQueryIO.writeTableRows()
     .to(destination)
     .withSchema(tableSchema)
     .withMethod(BigQueryIO.Write.Method.FILE_LOADS)
     .withTriggeringFrequency(org.joda.time.Duration.standardMinutes(10))
     .withNumFileShards(10)
     .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND)
     .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED));

并通过 gcloud cli 工具或谷歌云控制台排出工作,似乎工作几乎立即被认为是“排出”,即使withTriggeringFrequency之前刚刚触发。排水功能的行为是否会触发所有未决的写入?

标签: dataflow

解决方案


是的,Dataflow 会立即关闭所有进程中的窗口并触发所有触发器。一旦触发 Drain,管道将停止接受新的输入。输入水印将被推进到无穷大。已经在管道中的元素将继续被处理。可以安全地取消已排空的作业。当您发出排空命令时。

如需参考,请参阅 Google Effects of draining a job Effects of draining a job 的此文档


推荐阅读