首页 > 解决方案 > 使用 coalesce(1) 将数据集写入 s3 需要花费太多时间

问题描述

我正在使用 coalesce(1) 在 csv 进程中的 s3 存储桶中写入记录集。对于 505 条记录,这花费了太多时间。

dataset.coalesce(1).write().csv("s3a://bucketname/path");

我想提一下,在这个写作过程之前,我有一个加密过程,它正在改变数据集行的某些字段的值。我正在使用repartion(200)。作为

dataset.javaRDD().repartition(200).map(r -> func());

如果我跳过加密过程,那么写入过程甚至不需要一分钟。
是什么问题导致进程变慢?
我怎样才能提高性能?

标签: javacsvapache-sparkcoalesceapache-spark-dataset

解决方案


始终避免使用 coalesce(1) 而是使用 partition by,我想您用于加密数据的函数需要花费大量时间,因为它必须遍历所有记录,您可以将其更改为平面地图并检查性能

要求您检查地图和平面地图

欢迎加入社区,如果有用,请接受答案。


推荐阅读