【问题标题】:Can you programmatically detect re-execution in Google Cloud Dataflow?您能否以编程方式检测 Google Cloud Dataflow 中的重新执行?
【发布时间】:2019-12-03 08:23:26
【问题描述】:

在 Google Cloud Dataflow(流式传输管道)中,您的数据“捆绑包”可能会因失败或推测执行而重新执行。有没有办法知道当前的包/元素是重新执行的?

这对于为副作用提供条件行为非常有用(在我们的例子中:帮助使数据存储更新操作(读/写)幂等)。

【问题讨论】:

标签: google-cloud-datastore google-cloud-dataflow apache-beam


【解决方案1】:

我不认为这是通过 Beam API 提供的东西,但您可以通过以下机制避免了解这些信息的需要。

  1. 如果对外部数据存储的写入是幂等的,只需在写入步骤之前添加Reshuffle 转换即可引入融合中断。这将确保在出现故障时不会重新生成要写入的数据。
  2. 如果对外部数据存储的写入不是幂等的(例如,文件、BigQuery),通常的机制是将 (1) 与首先写入临时位置相结合。当对临时位置的所有(并行)写入完成后,可以通过单个工作人员以幂等且故障安全的方式最终确定结果。

许多 Beam 接收器利用这些机制以幂等方式写入外部数据存储。对于流式传输,这些操作通常在每个窗口中执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多