运行一个简单的 pyspark 代码,该代码在 1 个驱动程序(16 个核心)和 2 个工作节点(总共 32 个核心)上运行。我输入的单日数据约为 1 小时数据~33GB 数据。输入数据还有一个国家列,数据中不同国家的数量为 968 个。
我正在按日期和国家/地区分区写入数据。
results.write.partitionBy("date","country").format("delta").save("<path>")
写入目标位置的阶段共有 607 个任务,其中 32 个任务并行运行 [384/607(32 个运行)]。
据我了解,
- Spark 每个分区写入 1 个文件
- 任务数 = 分区数
- 所以任务数 = 分区数 = 文件数
问题- 在此阶段,正在写入目标位置(160/607(32 个正在运行)),我总共有 607 个任务,因此不应触发仅写入 607 个文件。相反,在每个日期+国家/地区文件夹下,它生成了随机数量的文件。