为什么创建了这么多Parquet文件?我们可以不限制Parquet输出文件吗?

时间:2017-01-03 05:41:46

标签: apache-spark apache-spark-sql apache-spark-mllib parquet

为什么在sparkSql中创建了如此多的Parquet文件?我们可以不限制Parquet输出文件吗?

1 个答案:

答案 0 :(得分:0)

一般情况下,当您写入镶木地板时,它会为每个分区写入一个(或更多,具体取决于各种选项)文件。如果要减少文件数,可以在写入之前调用数据帧上的coalesce。 e.g:

df.coalesce(20).write.parquet(filepath)

当然,如果您有各种选项(例如partitionBy),文件数量会急剧增加。

另请注意,如果您合并到非常少量的分区,这可能会变得非常慢(因为在分区之间复制数据,并且因为如果转到足够小的数字,则会降低并行度)。如果单个分区中的数据太大(当您合并分区时,自然会变大),也可能会出现OOM错误。

有几点需要注意:

  • saveAsParquetFile从版本1.4.0开始被删除。请改用write.parquet(path)。
  • 根据您的使用情况,在镶木地板文件上搜索特定字符串可能不是最有效的方法。