【问题标题】:Run cron-like tasks every few minutes in beam?在梁中每隔几分钟运行类似 cron 的任务?
【发布时间】:2019-01-05 03:37:19
【问题描述】:

我的 beam pipeline 将数据导入 bigquery,最近需要支持更新和删除。由于 BigQuery 对我在一天内可以执行的更新和删除量有每日限制,因此我需要一个单独的进程,每 30 分钟左右运行一次,以将更新和删除合并到主数据集中。

有没有办法用 Apache Beam 做到这一点?一个在计时器上运行并只执行副作用的函数,并确保它只在一台机器上执行?

如果我的所有代码都在同一个数据流作业代码库中,我会非常喜欢它,并且如果数据流作业没有运行,它就不会执行。

【问题讨论】:

标签: google-cloud-dataflow apache-beam


【解决方案1】:

否则,您应该使用 Kubernetes Cronjobs。

【讨论】:

    【解决方案2】:

    您可能会使用GenerateSequence 转换以指定频率触发操作(合并更新和删除)。

    【讨论】:

    • 请注意,GenerateSequence 有效地并行生成其所有值,而不用担心时间问题,因此对于每“n”分钟执行一次操作没有多大用处。 .withTimestampFn() 选项仅用于使用时间戳标记序列号,它不影响频率。因此,您必须使用窗口化和触发来实际每 'n' 分钟输出一个序列值。
    【解决方案3】:

    使用云调度程序每 30 分钟重新启动一次管道?

    https://cloud.google.com/scheduler/

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多