我正在阅读https://0x0fff.com/spark-architecture-shuffle/,这些文章讨论了根据映射器和化简器任务的数量生成的文件数。
但是我不确定是什么决定了映射器和化简器任务的数量。
可以请你帮忙。
答案 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文档中提及此设置的配置选项的链接。