代码之家  ›  专栏  ›  技术社区  ›  Geoffrey

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

  •  0
  • Geoffrey  · 技术社区  · 1 年前

    如何将Pyspark数据帧保存到具有特定大小的多个镶木地板文件中?

    示例:我的数据帧在HDFS上使用500GB,每个文件是128MB。我想把它保存到250个镶木地板文件中,每个文件是2GB。如何存档?

    0 回复  |  直到 1 年前
        1
  •  0
  •   Ziya Mert Karakas    1 年前

    在这里做一个简单的搜索总是很好的,如果这里有人问或回答,我已经可以看到几个了:

    PySpark: How to specify file size when writing parquet files?

    Write pyspark dataframe into specific number of parquet files in total across all partition columns

    要将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的数字,那么您可以使用联合来避免混洗,但重新分区更好地确保您想要的输出