【问题标题】:Is gzipped Parquet file splittable in HDFS for Spark?gzipped Parquet 文件是否可以在 HDFS for Spark 中拆分?
【发布时间】:2017-09-05 12:56:46
【问题描述】:

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

【问题讨论】:

    标签: apache-spark gzip parquet


    【解决方案1】:

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

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

    1. 每个 Parquet 文件由多个 RowGroup 组成,它们的大小应与您的 HDFS 块大小相同。
    2. 每个 RowGroup 由每列一个 ColumnChunk 组成。 RowGroup 中的每个 ColumnChunk 都具有相同的行数。
    3. ColumnChunk 被分割成页面,这些页面的大小可能在 64KiB 到 16MiB 之间。 压缩是按页面完成的,因此页面是作业可以处理的最低并行化级别。

    你可以在这里找到更详细的解释:https://github.com/apache/parquet-format#file-format

    【讨论】:

    • 感谢您的回答。只是想确认一下。这些在技术上将是 .gz.parquet 文件而不是 parquet.gz 文件,对吗?它只是像 Microsoft Polybase 这样的产品在以 parquet 格式从外部导出数据时生成 .gz 文件,我尚未验证它是自行压缩的文件还是文件块内部。
    • 是的,他们应该是gz.parquet。压缩应该通过 Parquet 实现在 Parquet 内部完成。如果您有一个工具首先生成 Parquet,然后在其上运行 GZIP,那么这些实际上是无效的 Parquet 文件。对于 Parquet,必须不压缩格式的某些部分(例如标题)。这些部分很小(通常大约 1 或 2 KiB),但压缩它们会导致显着的性能损失。
    猜你喜欢
    • 2020-10-28
    • 2020-03-04
    • 2017-08-07
    • 2020-08-28
    • 2015-01-27
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多