为什么在sparkSql中创建这么多Parquet文件?我们可以不限制镶木地板输出文件吗?
通常,
当您写入 Parquet 时,它将在每个分区写入一个(或多个,具体取决于各种选项)文件。如果要减少文件数,可以在写入之前在数据帧上调用 mergeesce。例如:
df.coalesce(20).write.parquet(filepath)
当然,如果您有各种选项(例如分区),文件数量可能会急剧增加。
另请注意,如果合并到非常少量的分区,这可能会变得非常慢(这既是因为在分区之间复制数据,也是因为如果您使用足够小的数字,并行度会降低)。如果单个分区中的数据太大(合并分区时,分区自然会变大),也可能会收到 OOM 错误。
需要注意的几点:
- saveAsParquetFile 自 1.4.0 版起已停用。请改用 write.parquet(path)。
- 根据您的使用案例,在镶木地板文件上搜索特定字符串可能不是最有效的方法。