为什么Spark创建的分区少于从S3读取的文件数量

时间:2018-11-06 12:52:50

标签: apache-spark amazon-s3

我正在使用Spark 2.3.1。

我有一份工作,可将5,000个小木地板文件读入s3。

当我先执行mapPartitions之后执行collect时,仅使用 278 任务(我期望有5000个)。为什么?

2 个答案:

答案 0 :(得分:0)

由于文件较小,Spark将多个文件分组到每个分区中。打印分区时,应该会看到很多东西。

示例(斯卡拉):

val df = spark.read.parquet("/path/to/files")
df.rdd.partitions.foreach(println)

答案 1 :(得分:0)

如果要使用5,000个任务,可以进行分区转换。

the docs中有关重新分区的报价:

  

随机重排RDD中的数据以创建更多或更少的数据   分区并平衡它们。这总是会拖曳所有数据   通过网络。

我建议您看看RDD Programming Guide。请记住,随机播放是一项昂贵的操作。