在以下情况下,火花数据保存操作非常慢
按日期(年,月,日)划分的数据帧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/")
效果很好,但是它将在"/path/year=2019/month=02/day=14/"
中创建_metadata,_common_metadata,_SUCCESS文件
代替"/path/"
。需要使用拖放分区列来保留与使用方法partitionBy
相同的字段。
因此,如何在不更改元数据文件位置的情况下仅使用一个分区来加快数据保存速度,可以在每个OP中进行更新。
使用显式分区路径而不使用partitionBy
是否安全?