如何在Spark中将分区分配给任务

问题描述 投票:2回答:1

假设我正在从S3文件夹中读取100个文件。每个文件的大小为10 MB。当我执行df = spark.read.parquet(s3 path)时,如何在任务之间分配文件(或分区)?例如。在这种情况下,df将具有100个分区,并且如果spark有10个正在运行的任务用于将该文件夹的内容读取到数据帧中,那么如何将这些分区分配给这10个任务?它是以循环方式进行的,还是每个任务在基于范围的分布中获得相等比例的所有分区,还是其他?任何指向相关资源的指针也将非常有帮助。谢谢。

apache-spark distributed-computing
1个回答
0
投票

任务与分区数成正比。

Spark尝试直接从原始分区中对行进行分区,而不给驱动程序带来任何负担。

分区逻辑是从随机选择的目标分区开始,然后以循环方法将分区分配给行。请注意,为每个源分区都选择了“开始”分区,并且可能会发生冲突。

最终的分布取决于许多因素:源/目标分区的数量以及数据框中的行数。

© www.soinside.com 2019 - 2024. All rights reserved.