Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 为什么我只能看到一个火花流卡夫卡接收器_Apache Spark_Apache Kafka_Spark Streaming - Fatal编程技术网

Apache spark 为什么我只能看到一个火花流卡夫卡接收器

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

我很困惑为什么我只能在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-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)