使用 Apache Beam 重新计算历史数据

Recalculate historical data using Apache Beam

我有一个计算数据并将其写入数据库的 Apache Beam 流项目,在错误修复或更改数据处理方式后没有大延迟的情况下重新处理所有历史记录的最佳方法是什么?

它非常依赖于应用程序。

例如,如果您使用的是 Kafka(并且所有数据都在其中),则采用一种直接的方法:

  • 停止并重新启动该作业(或者如果您根本不想停机,则启动另一个作业,而另一个保持 运行)而不使用保存点:
    • 使用不同的 Kafka 消费者组不干扰现有管道
    • 将新数据库设置为输出以从头开始构建其内容
    • 扩大作业,使其尽快完成重新处理
  • 以原子方式将旧数据库切换为新数据库
  • 缩减作业