Spark中读取HDFS时的任务数

Vik*_*kas 7 apache-spark

在此输入图像描述ORC 格式的非格式化表中有 200 个文件。每个文件约170KB。总大小约33MB。

想知道为什么 Spark 阶段读取表会生成 7 个任务。该作业分配给一个具有 5 个核心的执行器。

rlu*_*uta 9

Spark 将文件映射到分区的方式非常复杂,但有 2 个主要配置选项会影响创建的分区数量:

spark.sql.files.maxPartitionBytes默认情况下为 128 MB,设置可拆分源的最大分区大小。因此,如果您有 2 GB ORC 文件,最终将有 16 个分区。

spark.sql.files.openCostInBytes默认情况下为 4 MB,用作创建新分区的成本,这基本上意味着如果文件小于 4 MB,Spark 会将文件连接到相同的分区中。如果您有很多小的可分割文件,默认情况下您最终会得到大小约为 4MB 的分区,这就是您的情况。

如果您有不可分割的源(例如 gzip 压缩文件),则无论其大小如何,它们始终会位于单个分区中。