Apache spark 为什么我只能看到一个火花流卡夫卡接收器
我很困惑为什么我只能在spark web UI页面(8080)中看到一个卡夫卡接收器, 但我在Kafka中有10个分区,在spark cluster中使用了10个内核,在python中的代码如下: kvs=KafkaUtils.createStream(ssc,zkQuorum,“火花流消费者”{topic:10}) 我想卡夫卡莱佛的号码应该是10而不是1。 我很困惑。 提前谢谢你Apache spark 为什么我只能看到一个火花流卡夫卡接收器,apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,我很困惑为什么我只能在spark web UI页面(8080)中看到一个卡夫卡接收器, 但我在Kafka中有10个分区,在spark cluster中使用了10个内核,在python中的代码如下: kvs=KafkaUtils.createStream(ssc,zkQuorum,“火花流消费者”{topic:10}) 我想卡夫卡莱佛的号码应该是10而不是1。 我很困惑。 提前谢谢你 kvs = KafkaUtils.createStream(ssc, zkQuorum, "spark-strea
kvs = KafkaUtils.createStream(ssc, zkQuorum, "spark-streaming-consumer",{topic: 10})
该代码创建了一个10线程的接收器。每个线程将连接到一个分区,所有数据将由一个使用者使用一个内核进行提取。所有其他内核将(可能)处理接收到的数据
如果您希望有10个接收器,每个接收器连接到一个分区,使用一个内核,那么您应该这样做:(在Scala中,我的Python很弱,但是您知道了):
考虑到Spark需要额外的内核来处理接收到的数据。非常感谢Maasg,您的回答解决了我的问题。请问您在实践中更喜欢哪种方法,10个接收器1个线程还是1个接收器10个线程?我想知道是否只有一个接收器工作,当单个接收器阻塞或崩溃时,工作流程将被阻塞。@Jack我们根据负载平衡这一点。您可以尝试5个recx2线程(
{topic:2}
)或5个线程({topic:5}
)的2rec。10是一个坏分区数b/c没有留下很多选项。我们使用魔法数字12,所以我们可以做2x6,3x4,…,12x1
val recvs = (1 to 10).map(i => KafkaUtils.createStream(ssc, zkQuorum, "spark-streaming-consumer",{topic: 1})
val kafkaData = ssc.union(recvs)