首页 > 解决方案 > 如何在 Spark 流中使用 Spark 内部的 Kafka 实现偏移管理?

问题描述

我必须在 Spark 中为从 Kafka 流读取的 Java 流式作业实现偏移管理。然而,虽然这里的官方文档已经描述了这个过程,但它实际上并没有给出一个代码示例来说明如何实际存储和检索检查点的偏移量。相反,它神秘地说

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

这是否意味着如果我只是将检查点目录提供给 Spark 上下文,它会自动存储偏移量?当应用程序重新启动时,检索上次读取的偏移量怎么样?那里链接的检查点详细页面也将所有内容留给读者,只提供设置检查点目标的语法。

提供了一些关于如何使用检查点的线索,但在所有情况下,我发现它们已被用于累积计算某些东西而不是存储偏移量。 这个问题很接近,但仍然没有描述它。

请帮助我实现这个目标。

标签: javaapache-kafkaspark-streaming

解决方案


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


推荐阅读