在Spark Streaming文档中,他们建议并行化数据接收(link)。他们建议创建多个数据接收器的示例:
val numStreams = 5
val kafkaStreams = (1 to numStreams).map { i => KafkaUtils.createStream(...) }
这样做,您将获得5个内核,幸运地在5台不同的机器上接收数据。但就性能而言,为什么这个选项比拥有5个线程的数据接收器更好? (例如,对于具有超过5个核心的机器)
val numThreads = 5
val topicList = Map("topic1" -> numThreads)
val kafkaStream = KafkaUtils.createStream(ssc, kafkaParams, topics, ...)