【发布时间】:2023-03-20 10:25:01
【问题描述】:
当使用partitionBy 将dataframe 写入parquet 时:
df.write.partitionBy("col1","col2","col3").parquet(path)
我希望每个正在写入的分区都由一个单独的任务独立完成,并且与分配给当前 spark 作业的工作人员数量并行。
但是,在写入 parquet 时,实际上一次只有一个工作人员/任务在运行。那个工作人员正在循环遍历每个分区并连续写出.parquet 文件。为什么会出现这种情况 - 有没有办法在这个 spark.write.parquet 操作中强制并发?
以下是不是我想看到的(应该是700%+..)
从其他帖子中,我也尝试在前面添加repartition
Spark parquet partitioning : Large number of files
df.repartition("col1","col2","col3").write.partitionBy("col1","col2","col3").parquet(path)
不幸的是,这没有效果:仍然只有一名工人..
注意:我使用local[8] 在local 模式下运行,并且看到其他 spark 操作使用多达 8 个并发工作人员并使用高达 750% 的 cpu。 p>
【问题讨论】:
标签: scala apache-spark parquet