the*_*ler 7 partitioning apache-spark parquet pyspark
我正在使用 pyspark,并且我有一个大型数据源,我想对其进行重新分区,并明确指定每个分区的文件大小。
我知道使用该repartition(500)函数会将我的镶木地板分成 500 个大小几乎相等的文件。问题是每天都会有新数据添加到该数据源中。有些日子可能会有较大的输入,有些日子可能会有较小的输入。因此,当查看一段时间内的分区文件大小分布时,它会在每个文件200KB之间变化。700KB
我正在考虑指定每个分区的最大大小,以便无论文件数量多少,每天每个文件的文件大小或多或少相同。这将有助于我稍后在这个大型数据集上运行我的工作,以避免执行程序时间和洗牌时间等偏差。
有没有办法使用repartition()函数或在将数据帧写入镶木地板时指定它?
您可以考虑使用参数写入结果maxRecordsPerFile。
storage_location = //...
estimated_records_with_desired_size = 2000
result_df.write.option(
"maxRecordsPerFile",
estimated_records_with_desired_size) \
.parquet(storage_location, compression="snappy")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8821 次 |
| 最近记录: |