【问题标题】:How can make consumer group in spark kafka stream and assign comsumers to consumer group如何在 spark kafka 流中创建消费者组并将消费者分配给消费者组
【发布时间】:2020-10-15 23:02:22
【问题描述】:

我有一个名为 topic_1 的主题并创建了 4 个分区。我需要在 Kafka 火花流中并行读取。所以我需要做一个消费者组和消费者。

你能帮我怎么做吗?

现在 Kafka 火花流,一次从 Kafka 接收一个请求。

【问题讨论】:

  • @mike 不工作。 kafkaParams.put("application.id", "Recon-pipeline-stream"); kafkaParams.put("metadata.broker.list", "localhost:9092"); kafkaParams.put("auto.offset.reset", "largest"); kafkaParams.put("group.id", "recon-consumer-group1"); kafkaParams.put("num.stream.threads", "2");
  • 你不必“我需要创建一个消费者组和消费者。”这就是Kafka Client API的工作(前提是你使用相同的--groupId) Spark 使用它(所以你不必这样做)。您如何在 Spark 中从 Kafka 加载记录?

标签: java apache-spark apache-kafka


【解决方案1】:

假设您使用的是 Spark 的 KafkaUtils,它会自动利用 Spark Executor 的数量 * 每个 Executor 的核心数。

所以,如果你有 2 个 Spark Executor,每个 Executor 有 2 个 Core,Spark 会自动并行消耗 4 个主题分区。

在 Kafka Spark Streaming 集成中,输入任务的数量由主题中的分区数量决定。如果您的主题有 4 个分区,Spark Streaming 将为每个批次生成 4 个任务。

如果你有 1 个 Executor 和 1 个 Core,那么 Core 会依次执行 4 个任务(没有并行性)。而如果您有 2 个执行器,每个执行器有 1 个核心,那么每个核心将依次执行 2 个任务(因此并行度为 2)。

对于 4 个分区,您应该配置以下任何一项,以实现最大消费者并行度:

  • 1 个 4 核执行器
  • 2 个执行器,每个执行器有 2 个核心
  • 4 个执行器,每个执行器 1 个核心

【讨论】:

    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 2017-02-23
    相关资源
    最近更新 更多