我知道在大数据领域,Parquet、Avro等数据存储文件格式的使用非常广泛。我知道这些格式旨在提高性能、兼容性、模式演进、压缩等。我想专注于压缩,并理解为什么这些格式在幕后使用gzip、zlib和snappy等压缩格式?
这就引出了我的主要问题——以gzip格式保存数据和以Parquet格式保存数据有什么区别?为什么压缩格式发生在不同的类别中,而不仅仅是数据存储格式的其他选项?
数据的压缩(例如GZIP)和(结构)编码(Parquet格式)是两种可以结合的不同技术。本质上,你实际上总是必须这样做。
压缩只是获取二进制数据流并应用其算法来收缩数据。它不关心存储在字节流中的实际信息。
要将数据存储到二进制流中,您需要为其考虑二进制表示。如果您已经在查看Parquet,我会假设您有表格数据。对于这种常见的编码使用CSV或Parquet。压缩与它无关。您可以在之后将其应用于两种表示,以使磁盘存储更小。不过,在Parquet格式的情况下,压缩(包括GZIP)已经内置在格式中,以便以比一次应用整个二进制流更有效的方式应用它。