文档中的定义
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(而不是字符串数组)?
我知道字符串键是主题名称。但是整数值呢?我应该填写什么?
答案 0 :(得分:3)
阅读Javadoc:
公共静态JavaPairReceiverInputDStream createStream(JavaStreamingContext jssc, 字符串zkQuorum, 字符串groupId, java.util.Map主题)
创建一个输入流,以从Kafka Brokers中提取消息。数据的存储级别将是默认的StorageLevel.MEMORY_AND_DISK_SER_2。
参数: jssc-JavaStreamingContext对象
zkQuorum-Zookeeper仲裁(主机名:端口,主机名:端口,..)
groupId-该使用者的组ID
topics-要使用的(topic_name-> numPartitions )的映射。 每个分区都在其自己的线程中使用
返回: (Kafka消息密钥,Kafka消息值)的DStream
Map
的值是给定主题名称的分区数,它确定将用于消耗该主题的线程数。
答案 1 :(得分:3)
如果您看到createStream
here的KafkaUtils
方法的文档,则会看到
topics-要使用的(topic_name-> numPartitions)的映射。每个分区都在其自己的线程中使用
整数值是主题的分区数,作为地图中键的一部分。
答案 2 :(得分:1)
topics-要使用的(topic_name-> numPartitions)的映射。每个分区都在其自己的线程中使用
所以每个数字都是您要用于该主题的分区数