我正在使用Spark 2.3.1。
我有一份工作,可将5,000个小木地板文件读入s3。
当我先执行mapPartitions
之后执行collect
时,仅使用 278 任务(我期望有5000个)。为什么?
答案 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。请记住,随机播放是一项昂贵的操作。