Apache Spark:如何在执行程序中处理分区

时间:2017-09-08 03:45:22

标签: hadoop apache-spark dataframe

我一直在研究一段时间的火花,但有些领域对我来说仍然是灰色的,如果有人能深入研究这将是一个很大的帮助。

1)如果我有以下spark提交配置,并且spark创建了大约100个分区,那么如何在单个执行器中逐个或并行处理此分区? >将是什么情况1执行人。

--master yarn \
--deploy-mode cluster \
--num-executors 1  \
--executor-memory 3g \
--executor-cores 3 \

2)我们可以控制spark中的分区处理吗?

3)我理解执行程序核心有助于并行化分区中的任务,如果我有一个用例,我有一个foreachPartition方法,我在做一些处理消息,如max和min,并将此消息发送给Kafka,什么角色执行程序核心将在此操作中播放。

1 个答案:

答案 0 :(得分:0)

  1. 现在,您指定的执行程序数为1,执行程序核心数为3.因此,在您的计算机上只运行一个执行程序 它将同时运行最多3个任务。执行程序内存指定Spark可以缓存的数据量。 因此,最多3个执行程序中的100个分区可以并行处理。

  2. 我们可以使用repartition方法更改spark中RDD的分区。另外reduceByKey和其他一些方法都有一个选项 传递输出RDD中的分区数作为参数传递。

  3. 我完全不明白你的上一个问题。但执行程序核心将扮演与上述相同的角色,以并行运行任务 在一位遗嘱执行人身上。