首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花流直接法中的精确一次语义

火花流直接法中的精确一次语义
EN

Stack Overflow用户
提问于 2020-01-25 22:18:58
回答 1查看 634关注 0票数 0

Spark的官方文档说,基于SimpleConsumer的方法包括使用Spark,它不使用Zookeeper存储偏移量,而是使用Spark的元数据检查点存储偏移量。文档还说,基于直接的方法保证了精确的一次语义。

当我们使用ssc.checkpoint(“目录”)启用Spark的元数据检查点时,我们从不指定间隔。

现在,对于在微批处理间隔之后触发的每个微批处理,驱动程序向每个任务发送偏移量,这些任务检索对应的Kafka分区的数据。

问题

  1. 考虑到从Kafka检索到的用于指定偏移量的相应数据在Spark中没有持久化,并且只将偏移作为其元数据检查点的一部分存储在Spark中,那么检查点的时间不重要吗?因为它直接影响一次或至少一次语义?它是在触发微批处理并直接从kafka检索数据时发生,还是在完成微批处理结束时发生?
  2. 此外,偏移量作为元数据检查点的一部分存储了什么?它是指定已处理的偏移量还是尚未处理的偏移量?
EN

回答 1

Stack Overflow用户

发布于 2020-01-26 07:19:54

检查点是三个[Checkpoints](https://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html#checkpoints),[Kafka itself](https://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html#kafka-itself),[您自己的数据存储]中的一个选项,检查点有几个缺点,并且不能保证-一次,除非您的事务是幂等的。

文档警告您注意检查点,如下所示:

因此,如果您想要完全等价于一次语义,则必须在幂等输出之后存储偏移量,或者在原子事务中存储偏移量与输出一起。

请参阅正式文档中详细描述三个选项的部分

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

https://stackoverflow.com/questions/59913904

复制
相关文章

相似问题

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