gpt4 book ai didi

apache-spark - 如何在 spark 中使用 repartition() 指定文件大小

转载 作者:行者123 更新时间:2023-12-05 03:45:15 27 4
gpt4 key购买 nike

我正在使用 pyspark,我有一个大型数据源,我想重新分区并明确指定每个分区的文件大小。

我知道使用 repartition(500) 函数会将我的 parquet 分割成 500 个大小几乎相等的文件。问题是每天都有新数据添加到该数据源中。在某些日子里可能会有很大的输入,而在某些日子里可能会有较小的输入。因此,当查看一段时间内的分区文件大小分布时,每个文件在 200KB700KB 之间变化。

我正在考虑指定每个分区的最大大小,这样无论文件数量多少,我每天每个文件的文件大小大致相同。这将有助于我稍后在这个大型数据集上运行我的工作,以避免执行器时间和随机时间等出现偏差。

有没有办法使用 repartition() 函数或在将数据帧写入 parquet 时指定它?

最佳答案

您可以考虑使用参数 maxRecordsPerFile 写入结果。

storage_location = //...
estimated_records_with_desired_size = 2000
result_df.write.option(
"maxRecordsPerFile",
estimated_records_with_desired_size) \
.parquet(storage_location, compression="snappy")

关于apache-spark - 如何在 spark 中使用 repartition() 指定文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65912908/

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