Spark的官方文档说,基于SimpleConsumer的方法包括使用Spark,它不使用Zookeeper存储偏移量,而是使用Spark的元数据检查点存储偏移量。文档还说,基于直接的方法保证了精确的一次语义。
当我们使用ssc.checkpoint(“目录”)启用Spark的元数据检查点时,我们从不指定间隔。
现在,对于在微批处理间隔之后触发的每个微批处理,驱动程序向每个任务发送偏移量,这些任务检索对应的Kafka分区的数据。
问题
发布于 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),[您自己的数据存储]中的一个选项,检查点有几个缺点,并且不能保证-一次,除非您的事务是幂等的。
文档警告您注意检查点,如下所示:
因此,如果您想要完全等价于一次语义,则必须在幂等输出之后存储偏移量,或者在原子事务中存储偏移量与输出一起。
请参阅正式文档中详细描述三个选项的这部分
https://stackoverflow.com/questions/59913904
复制相似问题