gpt4 book ai didi

scala - Spark df.write.partitionBy 运行速度非常慢

转载 作者:行者123 更新时间:2023-12-01 19:20:13 27 4
gpt4 key购买 nike

我有一个数据框,保存为 Parquet 格式时大约需要 11GB。读取 dataframe 并写入 json 时,需要 5 分钟。当我添加partitionBy(“day”)时,需要几个小时才能完成。我知道分配到分区是代价高昂的操作。有没有办法让它更快?对文件进行排序可以让事情变得更好吗?

示例:

跑5分钟

df=spark.read.parquet(source_path).
df.write.json(output_path)

运行几个小时

spark.read.parquet(source_path).createOrReplaceTempView("source_table")
sql="""
select cast(trunc(date,'yyyymmdd') as int) as day, a.*
from source_table a"""
spark.sql(sql).write.partitionBy("day").json(output_path)

最佳答案

尝试在write之前添加repartition("day"),如下所示:

spark
.sql(sql)
.repartition("day")
.write
.partitionBy("day")
.json(output_path)

它应该可以加快您的查询速度。

关于scala - Spark df.write.partitionBy 运行速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45269658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com