首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >apache波束流处理故障恢复

apache波束流处理故障恢复
EN

Stack Overflow用户
提问于 2018-01-19 16:30:25
回答 1查看 577关注 0票数 0

运行一个流式传输管道,其中我使用avroIO流式传输来自gcs的文件/记录,然后创建每分钟/每小时的存储桶来聚合事件并将其添加到BQ中。如果管道失败,我如何正确恢复并仅处理未处理的事件?我不想重复计算事件。我认为一种方法是写入扳手或bigtable,但可能是写入BQ成功,但DB失败,反之亦然?如何在流式管道中以可靠一致的方式维护状态,以便仅处理未处理的事件?我想确保BQ中的最终聚合数据是不同事件的确切计数,而不是计数不足或计数过多?spark streaming pipeline如何解决这个问题(我知道他们有一些检查点目录来管理查询和数据帧的状态)?有什么推荐的技术可以准确地解决流水线中的这类问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-24 07:51:02

根据评论中的澄清,这个问题可以归结为“假设两次连续运行的流作业都是从头开始的,我们能否在两次连续运行中实现只有一次的语义?”简短的回答是否定的。即使用户愿意将某些状态存储在外部存储中,它也需要与流引擎内部状态原子/一致地提交。像Dataflow,Flink这样的流媒体引擎在内部存储所需的状态,这是‘恢复’作业所必需的。使用Flink,您可以从最新的保存点恢复,使用数据流,您可以'update‘一个正在运行的管道(请注意,即使出现错误,数据流实际上也不会终止您的作业,您需要显式取消一个作业)。数据流使用update提供只有一次的处理保证。

如果仔细使用外部存储,一些宽松的保证将是可行的。细节实际上取决于具体的目标(通常不值得额外的复杂性)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48336904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档