java - 使用 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());
如果我跳过加密过程,那么写入过程甚至不需要一分钟。
是什么问题导致进程变慢?
我怎样才能提高性能?
解决方案
始终避免使用 coalesce(1) 而是使用 partition by,我想您用于加密数据的函数需要花费大量时间,因为它必须遍历所有记录,您可以将其更改为平面地图并检查性能
要求您检查地图和平面地图
欢迎加入社区,如果有用,请接受答案。
推荐阅读
- javascript - 如何在嵌套映射函数中进行并发异步调用
- r - 在 R 中的“data.frame”上方创建标题
- bash - 尝试使用相对表达式返回文件名
- filter - 如何在 Wireshark 中过滤动态字段名称
- node.js - 使用 AWS 开发工具包的 Lambda 上的 AWS SAM AccessDeniedException
- r - 10个变量的不同组合但没有设置所需变量的数量
- csv - 应用程序不再出现在电子邮件共享菜单中以在 iOS13 中导入文件
- batch-file - 通过用户输入在 .bat 文件中传递多个参数并不能正确显示所有参数
- python - 重新启动程序后附加列表时删除泡菜数据
- ansible - 不能在剧本任务中使用 ansible 额外的变量值