什么决定了Spark中操作的映射器和化简器的数量

时间:2018-11-16 05:18:28

标签: apache-spark

我正在阅读https://0x0fff.com/spark-architecture-shuffle/,这些文章讨论了根据映射器和化简器任务的数量生成的文件数。

但是我不确定是什么决定了映射器和化简器任务的数量。

可以请你帮忙。

1 个答案:

答案 0 :(得分:-1)

这取决于如何对数据进行分区。在Spark SQL中,当您从源中读取数据时,分区数将取决于数据集的大小,输入文件数以及可用的核心数。 Spark将确定应创建的分区数量,因此在工作的第一阶段,这将是“映射器任务”的数量。然后,如果执行引起随机播放的转换(如groupBy,join,dropDuplicates等),则默认情况下,“ reducers任务”的数量将为200,因为Spark将创建200个分区。您可以通过以下设置进行更改:

SELECT * 
FROM   role_staff AS rs 
       INNER JOIN staff s 
               ON rs.staff_id = s.id 
       INNER JOIN roles r 
              ON rs.role_id = r.id 

其中, n 是您要使用的分区数(每次洗牌后要拥有的任务数)。 Here是指向Spark文档中提及此设置的配置选项的链接。