为什么我只能看到一个 spark streaming kafkaReceiver

why I only can see one spark streaming kafkaReceiver

我很困惑为什么我在 spark web UI 页面(8080)中只能看到一个 KafkaReceiver, 但是我在Kafka中确实有10个分区,我在spark集群中使用了10个核心,我的代码也在python中如下: kvs = KafkaUtils.createStream(ssc, zkQuorum, "spark-streaming-consumer",{topic: 10}) 我想 KafkaReceivers 的数量应该是 10 而不是 1。 我很困惑。 提前谢谢你!

kvs = KafkaUtils.createStream(ssc, zkQuorum, "spark-streaming-consumer",{topic: 10})

该代码创建了 1 个接收器和 10 个线程。每个线程将附加到一个分区,所有数据将由 1 个消费者使用 1 个核心提取。所有其他核心将(可能)处理接收到的数据。

如果你想有 10 个接收器,每个都连接到 1 个分区,使用 1 个核心,你应该这样做:(在 Scala 中,我的 Python 很弱,但你明白了):

val recvs = (1 to 10).map(i => KafkaUtils.createStream(ssc, zkQuorum, "spark-streaming-consumer",{topic: 1}) 
val kafkaData = ssc.union(recvs)

考虑到您将需要额外的内核来让 Spark 处理接收到的数据。