为什么在sparkSql中创建了如此多的Parquet文件?我们可以不限制Parquet输出文件吗?
答案 0 :(得分:0)
一般情况下,当您写入镶木地板时,它会为每个分区写入一个(或更多,具体取决于各种选项)文件。如果要减少文件数,可以在写入之前调用数据帧上的coalesce。 e.g:
df.coalesce(20).write.parquet(filepath)
当然,如果您有各种选项(例如partitionBy),文件数量会急剧增加。
另请注意,如果您合并到非常少量的分区,这可能会变得非常慢(因为在分区之间复制数据,并且因为如果转到足够小的数字,则会降低并行度)。如果单个分区中的数据太大(当您合并分区时,自然会变大),也可能会出现OOM错误。
有几点需要注意: