kafka消费者组在spark结构化流媒体中的意义

问题描述 投票:0回答:1

计划构建 Spark 结构化流应用程序,该应用程序从 Kafka 主题读取 json 数据,解析数据并写入任何存储。

val df = spark
  .readStream
  .format("kafka")
  .option("kafka.bootstrap.servers", "host1:port1,host2:port2")
  .option("subscribe", "topic1")
  .option("kafka.group.id", "myConsumerGroup")
  .load()

根据 Spark 文档,消费者组 id 由 Apache Spark ie 内部生成。默认情况下,每个查询都会生成一个唯一的组id来读取数据,或者我们可以使用kafka.group.id指定。据我所知,在一个消费者组内,任何时候一个kafka分区只能被一个消费者消费。如果我们要做的只是读取、解析和写入,那么kafka.group.id有什么意义,我们需要显式设置它吗?

apache-spark apache-kafka spark-structured-streaming
1个回答
0
投票

我们需要明确设置这个吗?

不。正如您所发现的,Spark 会自动创建一个。您还可以给出组前缀而不是静态字符串。

如果我们要做的只是读、解析、写,那还有什么意义

这并不是一个真正的 Spark 问题。 Kafka 消费者使用消费者组来实现可扩展性并防止重复读取

可以使用该值手动将偏移量存储回 Kafka,但除此之外,检查点文件可以比 Kafka 的至少一次行为提供更好的处理保证。

© www.soinside.com 2019 - 2024. All rights reserved.