Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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_Spark Streaming - Fatal编程技术网

Apache spark 火花流任务分配

Apache spark 火花流任务分配,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我有一个spark流媒体程序,它使用updateStateByKey。 当我在有3台机器的集群上运行它时,所有的updateStateByKey任务(这些是繁重的任务)都在一台机器上运行。这会导致输入调度延迟,而其他机器有空闲的CPU 我更改了工作人员的数量,但所有updateStateByKey任务都在一台特定机器上的工作人员上运行。我还尝试使用mapWithState代替updateStateByKey,但也有同样的问题 我如何告诉spark优先在所有机器上分配任务 JavaPair

我有一个spark流媒体程序,它使用
updateStateByKey
。 当我在有3台机器的集群上运行它时,所有的
updateStateByKey
任务(这些是繁重的任务)都在一台机器上运行。这会导致输入调度延迟,而其他机器有空闲的CPU

我更改了工作人员的数量,但所有
updateStateByKey
任务都在一台特定机器上的工作人员上运行。我还尝试使用
mapWithState
代替
updateStateByKey
,但也有同样的问题

我如何告诉spark优先在所有机器上分配任务

    JavaPairInputDStream<String, String> streamEvents = KafkaUtils.createDirectStream(
            jssc, String.class, String.class, StringDecoder.class, StringDecoder.class, kafkaParams, eventTopic
    );

    JavaPairDStream<String, String> newKeys = streamEvents.flatMapToPair(new KeyGenerator(zookeeperHosts));

    JavaPairDStream<String, String> scenarioKeys =
            newKeys.updateStateByKey(new HeavyKeysFunc(), 36);
JavaPairInputStreamEvents=KafkaUtils.createDirectStream(
jssc、String.class、String.class、StringDecoder.class、StringDecoder.class、kafkaParams、eventTopic
);
JavaPairDStream newKeys=streamvents.flatMapToPair(新的KeyGenerator(zookeeperHosts));
JavaPairDStream场景键=
updateStateByKey(newHeavyKeysFunc(),36);

作业已排队,CPU几乎处于空闲状态。

您是否检查了Spark UI以查看每个RDD有多少个分区?您如何创建流作业(流源)?你能添加密码吗?@YuvalItzchakov是的!我将分区数改为36,但有同样的问题。@maasg我使用
KafkaUtils.createDirectStream
在一台单独的机器上用2个分区从Kafka读取。添加您的代码,以便我们可以尝试提供帮助。