【问题标题】:Why is the "topics" argument of KafkaUtils.createStream() a Map rather then array?为什么 KafkaUtils.createStream() 的“主题”参数是 Map 而不是数组?
【发布时间】:2019-10-20 17:24:42
【问题描述】:

文档中的定义:

org.apache.spark.streaming.kafka

类 KafkaUtils

static JavaPairReceiverInputDStream<String,String> createStream(JavaStreamingContext jssc, String zkQuorum, String groupId, java.util.Map<String,Integer> topics)

创建一个从 Kafka Brokers 拉取消息的输入流。

为什么主题是 Map(而不是字符串数组)?

我知道字符串键是主题名称。但是整数值呢?我应该填写什么?

【问题讨论】:

    标签: java apache-spark apache-kafka spark-streaming


    【解决方案1】:

    阅读Javadoc

    公共静态 JavaPairReceiverInputDStream createStream(JavaStreamingContext jssc, 字符串 zkQuorum, 字符串组 ID, java.util.Map 主题)

    创建一个从 Kafka Brokers 提取消息的输入流。数据的存储级别将是默认的 StorageLevel.MEMORY_AND_DISK_SER_2。

    参数: jssc - JavaStreamingContext 对象

    zkQuorum - Zookeeper 仲裁(主机名:端口,主机名:端口,..)

    groupId - 此消费者的组 ID

    topics - 要使用的 (topic_name -> numPartitions) 映射。 每个分区都在自己的线程中使用

    返回: DStream of (Kafka message key, Kafka message value)

    Map 的值是给定主题名称的分区数,它决定了将用于消费该主题的线程数。

    【讨论】:

      【解决方案2】:

      如果您看到 KafkaUtils herecreateStream 方法的文档,您会看到

      topics - 要使用的 (topic_name -> numPartitions) 映射。每个分区都在自己的线程中消耗

      整数值是主题的分区数,作为映射中键的一部分。

      【讨论】:

        【解决方案3】:

        来自 Javadoc:https://spark.apache.org/docs/1.3.0/api/java/index.html?org/apache/spark/streaming/kafka/KafkaUtils.html

        topics - 要使用的 (topic_name -> numPartitions) 映射。每个分区都在自己的线程中消耗

        所以每个数字是您要用于该主题的分区数

        【讨论】:

          猜你喜欢
          • 2018-06-18
          • 2015-09-08
          • 1970-01-01
          • 1970-01-01
          • 2020-06-05
          • 2010-11-05
          • 2012-01-16
          • 2012-09-04
          • 2011-11-24
          相关资源
          最近更新 更多