【问题标题】:How do I implement offset management in Spark streaming with Kafka inside Spark itself?如何在 Spark 流中使用 Spark 内部的 Kafka 实现偏移管理?
【发布时间】:2019-07-09 19:03:17
【问题描述】:

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

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

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

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

请帮助我实现这个目标。

【问题讨论】:

  • 如果我们重新启动 Spark Streaming 应用程序,它会读取检查点目录中存储在检查点目录中的任何数据访问和处理。
  • 如果您阅读更多 - 如果您升级代码,检查点将不起作用...最好使用 Zookeeper 或 Kafka 本身进行偏移管理
  • 我正在尝试在 Kafka 中保存偏移量。但是如何检索最新的偏移量,以便从上次处理的记录中恢复处理?

标签: java apache-kafka spark-streaming


【解决方案1】:

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

【讨论】:

  • 我正在尝试在 Kafka 中保存偏移量。但是如何检索最新的偏移量,以便从上次处理的记录中恢复处理?
猜你喜欢
  • 2021-01-15
  • 2018-09-22
  • 2019-10-03
  • 2021-03-18
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 2018-08-30
  • 2018-04-12
相关资源
最近更新 更多