Apache Parquet 中文文档

欢迎阅读 Apache Parquet 的文档。在这里,您可以找到有关 Parquet 文件格式的信息,包括规范和开发资源。


Parquet 文件格式概述

Apache Parquet 是一种专为高效存储和处理大规模数据而设计的列式存储格式。它广泛用于大数据处理生态系统,如 Apache Hadoop、Apache Spark 和 Apache Drill。Parquet 提供了高效的数据压缩和编码,减少存储成本并提高查询性能。

Parquet 概念

介绍了 Parquet 文件格式的核心概念,包括 Row Group、Column Chunk、Page 和 Encoding 等。

Parquet 文件格式

Parquet 规范详细定义了文件格式的结构,包括:

  • 文件格式:Parquet 文件如何存储数据,包括元数据和数据页的组织方式。
  • 编码方式:支持的编码方式,如 RLE(Run-Length Encoding)和字典编码。
  • 数据类型:支持的数据类型,如 INT32、FLOAT、DOUBLE、STRING 等。
  • 压缩算法:支持的压缩算法,如 Snappy、Gzip 和 Zstandard。

开发资源

如果您是开发者,您可以使用以下资源来了解和实现 Parquet:

  • 官方 GitHub 仓库:Parquet 的开源实现和代码库。
  • API 文档:提供 Java、C++ 和 Python 版本的 Parquet API 参考。
  • 示例代码:展示如何读取、写入和优化 Parquet 文件的代码示例。

最佳实践

1. 选择合适的压缩算法

Parquet 支持多种压缩算法,不同的算法适用于不同的场景:

  • Snappy:解压速度快,适用于交互式查询场景。
  • Gzip:压缩率高,适用于存储优化场景。
  • Zstandard:兼顾压缩率和解压速度,适用于高吞吐量应用。

2. 优化列存储

由于 Parquet 采用列式存储,应尽量减少查询不必要的列。例如:

  • 在 SQL 查询中,仅选择需要的列,而不是 SELECT *
  • 结合 Parquet 的 Predicate Pushdown,让计算尽可能在存储层完成,减少数据扫描量。

3. 适当调整 Row Group 大小

  • Parquet 文件由多个 Row Group 组成,每个 Row Group 影响查询性能。
  • 通常建议设置 Row Group 大小在 512MB 到 1GB 之间,以平衡 IO 和查询性能。

4. 利用字典编码

  • 对于重复值较多的字符串或分类数据,使用 字典编码 可以大幅减少存储占用。

5. 避免小文件问题

  • Parquet 适用于大块数据存储,不建议存储大量小文件,因为这会增加元数据管理开销。
  • 可以使用 合并小文件 或者 Parquet Append 来优化存储和查询性能。

查看全部文档

Apache Parquet 基础概念(Concepts)

本文档介绍 Apache Parquet 文件格式的相关概念和术语。包括块、文件、行组、列块和页面等概念。

Apache Parquet 中文文档

欢迎阅读 Apache Parquet 的文档。在这里,您可以找到有关 Parquet 文件格式的信息,包括规范和开发资源。

Parquet 布隆过滤器(Bloom Filter)

Parquet 布隆过滤器是一种紧凑的数据结构,用于近似存储一个集合。它可以回答成员查询,返回 ‘绝对不存在’ 或 ‘可能存在’ 的结果,其中假阳性(false positive)的概率可以在初始化过滤器时配置。布隆过滤器不会产生假阴性(false negatives)。

Parquet 文件格式配置

本页面包含有关 Parquet 文件格式配置的信息。

Parquet 校验和 (Checksumming)

在 Parquet 中,各种类型的页面(Pages)都可以单独进行校验和计算。这种机制允许在 HDFS 文件层面禁用校验和,以更好地支持单行查找(single row lookups)。

Parquet 列块(Column Chunks)

Parquet 列块由一个个连续写入的页面(pages)组成。这些页面共享一个通用的页头(header),读取器可以跳过不感兴趣的页面。页面的数据紧随其头部,并且可以进行压缩和/或编码。压缩和编码方式在页面的元数据(metadata)中指定。

Parquet 数据页压缩

Parquet 数据页压缩允许对字典页和数据页中的数据块进行压缩,以提高存储效率。本文介绍 Parquet 支持的压缩编解码器及最佳实践。

Parquet 编码(Encodings)

Parquet 模块化加密

Parquet 文件中的敏感信息可以通过模块化加密机制进行保护,该机制能够对文件数据和元数据进行加密和认证,同时仍然支持常规的 Parquet 功能(列投影、谓词下推、编码和压缩)。

Parquet 错误恢复

Parquet 数据页(Data Pages)

本页面介绍 Parquet 数据页的结构和最佳实践。

Parquet 文件可扩展性

Parquet 实现状态

本页面总结了不同 Parquet 实现所支持的功能。

Parquet 嵌套编码(Nested Encoding)

本文介绍 Parquet 文件格式中嵌套列的编码方式,包括定义级别和重复级别的作用,以及最佳实践。

Parquet 空值(Nulls)

Apache Parquet 中空值(NULL)的存储和处理方式

Parquet 页面索引(Page Index)

本文档描述了 Parquet 文件页脚中的列索引(Column Index)页面格式。这些页面包含数据页(DataPages)的统计信息,并可用于在扫描有序或无序列数据时跳过不相关的页面,从而提高查询效率。

Parquet 逻辑类型(Logical Types)

逻辑类型(Logical Types)用于扩展 Parquet 可以存储的数据类型,通过指定如何解释基本数据类型来实现。

Parquet 数据类型

Parquet 文件格式支持的数据类型及最佳实践

Apache Parquet 文件格式(File Format)

本文介绍 Apache Parquet 文件格式的基本结构和设计原则,以及最佳实践建议。

Parquet 的开发动机

本文介绍了 Apache Parquet 文件格式的开发动机和设计目标。Parquet 旨在提供高效的列式存储解决方案,以满足大数据处理的需求。