是否在HDFS中为Spark分割了压缩的Parquet文件?

时间:2017-04-10 13:01:07

标签: apache-spark gzip parquet

在这个主题上搜索和阅读互联网上的答案时,我收到了令人困惑的信息。有谁可以分享他们的经验?我知道gzipped csv不是这样的事实,但Parquet的文件内部结构可能是Parquet与csv完全不同的情况吗?

1 个答案:

答案 0 :(得分:16)

GZIP压缩的Parquet文件实际上是可拆分的。这是因为Parquet文件的内部布局。它们总是可拆分的,与使用的压缩算法无关。

这个事实主要是由于Parquet文件的设计分为以下几部分:

  1. 每个Parquet文件都包含多个RowGroup,这些RowGroup应与HDFS Block Size的大小相同。
  2. 每个RowGroup由每列ColumnChunk组成。 RowGroup中的每个ColumnChunk都具有相同的行数。
  3. ColumnChunks分为Pages,这些可能是64KiB到16MiB的大小。 压缩是基于每页进行的,因此页面是作业可以处理的最低级别的并行化。
  4. 您可以在此处找到更详细的说明:https://github.com/apache/parquet-format#file-format