apache-spark - 如何加快保存只有一个分区的分区数据?
问题描述
在以下情况下,spark 数据保存操作非常慢:
df
按日期(年、月、日)划分的df
数据框包含恰好一天的数据,例如 2019-02-14 。
如果我保存df
:
df.write.partitionBy("year", "month", "day").parquet("/path/")
由于所有数据属于一个分区,由一个任务(??)处理,它会很慢。
如果df
使用显式分区路径保存:
df.write.parquet("/path/year=2019/month=02/day=14/")
它运行良好,但它会创建 _metadata、_common_metadata、_SUCCESS 文件"/path/year=2019/month=02/day=14/"
而不是"/path/"
. 删除分区列需要保留与使用方法相同的字段partitionBy
。
那么,如何在不更改元数据文件位置的情况下仅使用一个分区来加快保存数据的速度,可以在每个 OP 中进行更新。
使用显式分区路径而不是使用 是否安全partitionBy
?
解决方案
推荐阅读
- node.js - 部署我的应用程序时如何使用 .env 文件?
- python - Python脚本在双击时不起作用
- arrays - 如何使用 MongoDB 将嵌套的对象值数组转换为逗号分隔的字符串
- python - 防止 Pandas 在创建数据框时将整数强制转换为浮点数
- spring-boot - 减少 Spring Cloud Kafka Streams 应用程序中的样板
- python - 使用元组作为字典键
- dart - 向响应添加其他属性
- jquery - 我的 Django 项目中的 AJAX 分页指向“找不到页面”
- r - 并行化列成对矩阵比较
- qt - Qt。在 QProcess 中复制资源文件