关于Spark Streaming容错的疑问

来源:7-10 自定义维护Offset读取实现

大冲鸭

2022-01-26

请问老师如果Spark Streaming作业在消费完数据和把偏移量存储到介质之间的这段时间挂掉怎么办

写回答

1回答

Michael_PK

2022-02-07

这是个很好的问题。

其实我们要做到的结果是:数据消费完,和offset提交这2个动作的原子性。

但是大数据场景下,两个操作的数据存储地方可能不太一样,比如数据消费统计完进入的是HBase,而offset是存放在MySQL,两个不同数据库是没有办法保证原子性的。

所有对于消费的数据进行统计分析后,要能做到结果更新的幂等性。

换句话说:你即使消费完了,offset没提交成功,那么这批数据还应该被重新消费并统计完存储到某个地方去,此时要做的是update操作。 

总而言之:我们要做的是对统计结果的upsert(第一次是insert,后面就是update)


0
0

Spark3实时处理-Streaming+StructuredStreaming实战

实战Spark3实时处理,掌握两套企业级处理方案

340 学习 · 238 问题

查看课程