为什么我不能使用 "cat file1.parquet file2. parquet > result.parquet" 合并多个镶木地板文件?



我已经使用pyspark创建了多个镶木地板文件,现在我正在尝试将所有镶木地板的文件合并为1。我可以合并这些文件,但在读取生成的文件时,我遇到了一个错误。以前有人面对过这个问题吗?

您不能简单地使用cat连接Parquet文件,因为它们是带有"目录;在页脚中。要合并两个文件,您必须同时读取它们并写出一个全新的文件。这可以使用CCD_ 3中的CCD_。

使用cat合并两个Parquet文件不起作用的技术背景可以归结为一个事实,即一个Parquet文件没有页脚是无用的。每个Parquet文件大致由以下结构组成:

RowGroup(nrows=..)
Column with nrows
Column with nrows
..
RowGroup(nrows=..)
..
..
Footer
Schema (tells you the type of the columns)
total_nrows
Location of RowGroups in the file

如果将两个文件cat放在一起,则只能看到这两个文件的最后一个页脚。此外,如果用于读取文件的库进行了一些完整性检查,它会意识到您的文件以某种方式被破坏,并完全出错。

最新更新