Geoffrey Asked: 2023-08-20 01:09:57 +0800 CST2023-08-20 01:09:57 +0800 CST 2023-08-20 01:09:57 +0800 CST Pyspark:将数据帧保存到具有特定大小的单个文件的多个镶木地板文件 772 如何将 Pyspark 数据帧保存到多个具有特定大小的 parquet 文件? 示例:我的数据帧在 HDFS 上使用 500GB,每个文件为 128MB。我想将其保存为 250 个 parquet 文件,每个文件为 2GB。我怎样才能存档这个? apache-spark 1 个回答 Voted Best Answer Ziya Mert Karakas 2023-08-20T07:57:23+08:002023-08-20T07:57:23+08:00 如果这里有人问过或回答过这个问题,那么在这里进行简单的搜索总是好的,我已经可以看到几个: PySpark:写入镶木地板文件时如何指定文件大小? 将 pyspark 数据帧写入所有分区列中总共特定数量的 parquet 文件 要将 PySpark 数据帧保存到多个具有特定大小的 Parquet 文件,您可以使用 repartition 方法将数据帧拆分为所需数量的分区,然后使用带有 partitionBy 选项的 write 方法将每个分区保存为单独的 Parquet 文件。例如,要将数据帧保存到 250 个 Parquet 文件,每个文件大小为 2GB,可以使用以下代码: df = df.repartition(250) df.write.partitionBy("partition_column").parquet("hdfs:///path//") 将partition_column 替换为要作为分区依据的列的名称。这将按该列组织输出文件。该语句中的partitionBy是可选的。 如果您将分区大小减小到高于 250,那么您可以使用合并来避免随机播放,但重新分区可以更好地确保您所需的输出
如果这里有人问过或回答过这个问题,那么在这里进行简单的搜索总是好的,我已经可以看到几个:
PySpark:写入镶木地板文件时如何指定文件大小?
将 pyspark 数据帧写入所有分区列中总共特定数量的 parquet 文件
要将 PySpark 数据帧保存到多个具有特定大小的 Parquet 文件,您可以使用 repartition 方法将数据帧拆分为所需数量的分区,然后使用带有 partitionBy 选项的 write 方法将每个分区保存为单独的 Parquet 文件。例如,要将数据帧保存到 250 个 Parquet 文件,每个文件大小为 2GB,可以使用以下代码:
将partition_column 替换为要作为分区依据的列的名称。这将按该列组织输出文件。该语句中的partitionBy是可选的。
如果您将分区大小减小到高于 250,那么您可以使用合并来避免随机播放,但重新分区可以更好地确保您所需的输出