Pyspark:将数据帧保存到具有特定大小的单个文件的多个 parquet 文件中

问题描述 投票:0回答:1

如何将 Pyspark 数据帧保存到多个具有特定大小的 parquet 文件?

示例:我的数据框在 HDFS 上使用 500GB,每个文件 128MB。我想将其保存为 250 个 parquet 文件,每个文件为 2GB。我怎样才能存档这个?

apache-spark hadoop pyspark parquet
1个回答
0
投票

如果有人在这里询问或回答这个问题,在这里进行简单的搜索总是好的,我已经可以看到几个:

PySpark:编写镶木地板文件时如何指定文件大小?

将 pyspark 数据帧写入所有分区列中总共特定数量的 parquet 文件中

要将 PySpark 数据帧保存到多个具有特定大小的 Parquet 文件,您可以使用 repartition 方法将数据帧拆分为所需数量的分区,然后使用带有 partitionBy 选项的 write 方法将每个分区保存为单独的 Parquet 文件。例如,要将数据帧保存到 250 个 Parquet 文件,每个文件大小为 2GB,可以使用以下代码:

df = df.repartition(250)
df.write.partitionBy("partition_column").parquet("path/to/output/directory")

将partition_column替换为您想要分区的列的名称。这将按该列组织输出文件。 partitionBy 是这个语句是可选的。

如果您将分区大小减小到大于 250,则可以使用合并来避免随机播放。

© www.soinside.com 2019 - 2024. All rights reserved.