经过广泛的研究,我发现
Parquet是一种面向列的数据文件格式,用于高效的数据存储和检索。它提供了高效的数据压缩和编码方案,增强了处理大量复杂数据的性能。
然而,我无法理解为什么当我运行df.write.parquet("/tmp/output/my_parquet.parquet")时,尽管支持灵活的压缩选项和高效的编码,parquet仍会写入多个文件。这是否与并行处理或类似概念直接相关?
发布于 2022-06-19 20:22:24
许多框架利用了这种多文件布局特性的拼花格式。所以我想说,这是一个标准的选项,这是地板规范的一部分,并默认使用它。
这对并行处理确实有好处,但也有其他用例,例如云或网络文件系统上的处理(并行或串联),其中数据传输时间可能占整个IO的很大一部分。在这些情况下,使用小元数据文件(提供有关要读取的数据文件的统计信息的小元数据文件)的拼板“单元”格式在读取数据的小子集时具有显著的性能优势。无论是单线程应用程序读取数据的子集,还是并行进程中的每个工作人员都读取整体的一部分,这都是正确的。
发布于 2022-06-19 16:25:06
它不仅适用于地板,而且是一个火花特性,为了避免网络io,它将每个洗牌分区写成一个“部分.”文件在磁盘上和每个文件,如您所说,将有压缩和有效的编码在默认情况下。
所以是的,它与并行处理直接相关
https://stackoverflow.com/questions/72676423
复制相似问题