为什么我只能看到一个火花流kafkaReceiver

时间:2015-06-26 18:16:14

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

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

1 个答案:

答案 0 :(得分:5)

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

该代码创建了一个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需要额外的内核来处理收到的数据。