如何在Spark本身中使用Kafka在Spark流中实现偏移管理?

时间:2019-07-05 12:28:53

标签: java apache-kafka spark-streaming

我必须在Spark中为从Kafka流读取的Java中的流作业实现偏移管理。但是,尽管该过程已在官方文档here中进行了描述,但实际上并没有给出如何实际存储和检索检查点偏移量的代码示例。更确切地说,它是

  

如果启用Spark检查点,则偏移量将存储在检查点中。

这是否意味着如果我仅向Spark上下文提供检查点目录,它将自动存储偏移量?当应用程序重新启动时,如何检索最后读取的偏移量呢?链接到此处的detail page上的检查点也将所有内容留给读者,并且仅提供设置检查点目的地的语法。

Thisthis给出了有关如何使用检查点的一些线索,但是在所有情况下,我都发现它们已用于累积计算内容而不是存储偏移量。 This question接近,但仍然没有描述。

请帮助我实现这一目标。

1 个答案:

答案 0 :(得分:0)

在检查点中保存偏移量对您不起作用,因为spark将在检查点中保存任务,因此代码的升级要求删除检查点。相反,您可以将偏移量保存在Zookeeper,Kafka,文件系统或任何数据库中。