课程首页· 速查表· 术语表

Reference · 术语

Parquet 术语表

和同事对齐说法用。每条配一句工程语言翻译,右列标出它在哪一课讲透。

文件结构

术语中文一句话课次
Row Group行组一批行的横切,包含这批行的所有列。并行与跳过的单位。pyarrow 默认 1,048,576 行,DuckDB 默认 122,880 行L2
Column Chunk列块某个 row group 里某一列的全部数据,字节连续。I/O 的单位——一次连续读取L2
Page页column chunk 内的小块。编码与压缩的单位。pyarrow 默认 1 MB 或 20000 行,谁先到算谁L2
Dictionary Page字典页一列在本 row group 内出现过的不同值,只存一份。数据页存的是它的下标L3
Footer文件元数据文件尾部的"目录":schema + 每块的偏移量、体积、统计。元数据在尾部是为了单遍写入L2
PAR1魔数文件首尾各 4 字节的标识。尾部结构是 [footer][4 字节小端长度][PAR1]L2
Physical Type物理类型磁盘上真正的存法,只有 7 种:BOOLEAN / INT32 / INT64 / INT96(废弃) / FLOAT / DOUBLE / BYTE_ARRAY / FIXED_LEN_BYTE_ARRAYL2
Logical Type逻辑类型物理类型之上的语义标注:STRING(BYTE_ARRAY)、TIMESTAMP(INT64)、DECIMAL、UUID 等L2
Definition /
Repetition Level
定义/重复层级嵌套结构打平后的两串小整数:前者记"null 出现在哪一层",后者记"是不是同一个 list 的延续"。来自 Google Dremel 论文。平表用不上L2

编码与压缩

术语中文一句话课次
Encoding编码懂语义的压缩:知道这列是递增整数还是重复字符串,按语义压。收益常是数量级L3
Compression压缩不懂语义的通用压缩(zstd / snappy / gzip),只找字节重复模式。作用在编码之后L3
PLAIN原样编码按小端直接存。兜底方案,数据毫无规律时反而最优L3
RLE_DICTIONARY字典 + 游程建"值→下标"表,数据页只存下标,下标再用游程/位打包压。写入器默认开,适合低基数列L3
DELTA_BINARY_PACKED差分编码只存相邻值的差。时序数据的头号武器——实测把等间隔时间戳列从 7.85 MB 压到 0.03 MBL3
DELTA_BYTE_ARRAY前缀压缩存"与上个值共享的前缀长度 + 后缀"。适合有序且有共同前缀的字符串(路径、URL)L3
BYTE_STREAM_SPLIT字节流拆分把浮点数的第 1、2、3… 字节各归一条流。需实测——本课程样本上是负收益L3
字典抢跑—本课程的说法:字典编码优先级最高,不显式收窄 use_dictionary,你指定的其他编码不生效L3

统计与跳过

术语中文一句话课次
Predicate Pushdown谓词下推把 WHERE 条件推到读取层,用统计信息判断"这块能不能整块跳过"L4
Projection Pushdown列裁剪只读查询用到的列。永远生效的一层,所以 SELECT * 在列存上有真实代价L4
Statistics统计信息每个 row group 每列的 min / max / null 数,存在 footer 里。用 min_value/max_value,别用已废弃的 min/maxL2
Page Index页索引把每一页的 min/max 也集中到 footer。含 ColumnIndex(按值找页)和 OffsetIndex(按行号找页)。pyarrow 默认不写L4
Bloom Filter布隆过滤器能确定回答"这块肯定没有 X"的紧凑位图。只在高基数 + 等值点查 + 非排序键三条同时成立时才值得开L4
Sorting Columns排序键写入时的物理排序顺序。写入侧最重要的一个决定——决定 row group 统计能不能跳过。实测差 5 倍L4
Cardinality基数一列里不同值的个数。低基数(租户、楼栋、状态)适合字典;高基数(UUID、时间戳)不适合L3

数据集与生态

术语中文一句话课次
Hive PartitioningHive 分区把列值编进目录名(day=2026-01-08/),引擎看目录就能排除。文件之外的一层过滤L5
Small File Problem小文件问题文件太多太小 → 元数据开销暴涨、压缩效果变差、open/close 次数压垮性能。实测:文件数 ×200 → 体积 ×2.2、查询慢 13–50 倍L5
Compaction合并压实把一个分区里的碎片文件读出来重排重写成大文件。裸目录上不是原子操作L5
Schema Evolution模式演进表结构随时间变化。裸 Parquet 只有"加可空列 + union_by_name"是真正安全的L5
Table Format表格式Parquet 之上的一层(Iceberg / Delta / Hudi),提供事务、时间旅行、行级更新、schema 管理。底下存的仍是 ParquetL6
Variant变体类型2025 年引入的半结构化原生类型(metadata + value 双 binary),配合 shredding 把热字段抽成强类型列。官方点名 IoT 场景,但生态尚在铺开L6
Shredding字段抽取把 Variant 里高频访问的字段单独抽成 Parquet 列,让它重新享受编码、压缩与统计L6
ORC / Avro—另外两种格式。ORC 与 Parquet 定位几乎相同(Hive 生态更常见);Avro 是行存,适合流式传输与写入,不适合分析扫描L1
定义来源 Apache Parquet — Concepts · File Format · Encodings · Logical Types