如何用Spark高效读取多个小parquet文件?有CombineParquetInputFormat吗?

2023-12-12

Spark 生成了多个小 parquet 文件。如何在生产者和消费者 Spark 作业上有效处理少量 parquet 文件。


恕我直言,最直接的方法是在写入 parquet 文件之前使用重新分区/合并(除非数据倾斜并且您想要创建相同大小的输出,否则最好合并),这样您就不会创建小文件。

df
  .map(<some transformation>)
  .filter(<some filter>)
  ///...
  .coalesce(<number of partitions>)
  .write
  .parquet(<path>)

分区数可以根据数据帧中的总行数除以某个因素来计算,通过反复试验将为您提供适当的大小。

在大多数大数据框架中,最佳实践是优先选择少量较大的文件而不是许多小文件(我通常使用的文件大小是 100-500MB)

如果您已经有小文件中的数据,并且您想要合并它,据我所知,您将必须使用 Spark 重新分区来读取它到更少的分区,然后再次写入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用Spark高效读取多个小parquet文件?有CombineParquetInputFormat吗? 的相关文章

随机推荐