跳到主内容
快讯直播
AI智模界
AI 词典

Parquet 与列式存储:为什么数据管道不用 CSV

Parquet 是一种列式存储(columnar storage)文件格式:它把一张表按“列”而不是按“行”写到磁盘上,所以只读需要的几列时,其余列的字节根本不用碰。

打个比方

把一张表想成一栋宿舍楼:每行是一个房间,每列是一种家具。

行式存储(row-oriented)像按房间打包——101 室的床、桌、台灯全装一箱。你想统计“全楼有多少盏台灯”,就得把每个箱子都拆开,翻出台灯,再把桌椅扔回去。

列式存储像按家具类型打包——所有台灯一箱,所有椅子一箱。统计台灯只开一个箱子,别的箱子碰都不用碰。Parquet 用的是后一种打包方式。

为什么快

少读。分析查询通常只关心少数几列,比如“按城市统计订单金额”,100 列的表里只用 3 列。按列存放时,磁盘上只需读这 3 列,扫描量按比例掉下来。

好压。同一列里类型一致、取值还常常重复(“城市”列反复就是那几个名字),字典编码(dictionary encoding)、游程编码(run-length encoding)这类手段能压得很狠。文件更小,读得更少,两头都省。

能跳。Parquet 把数据切成若干行组(row group),每组记录各列的统计信息,比如最大值、最小值。查询只要某段范围的数据,落在范围外的行组整块跳过——这叫谓词下推(predicate pushdown)。

和邻居比

维度CSVParquet
布局按行按列
类型靠猜写在 schema 里
只读 3 列整个文件读一遍只读这 3 列
人眼可读能直接打开二进制,要工具
擅长交换、小数据、手工看分析、大规模管道

CSV 是行式文本格式,胜在人人可读;Parquet 是二进制格式,胜在机器算得快。ORC 也是列式文件格式,生态略有不同。另外要分清:Parquet 是文件格式,不是数据库——Spark、Pandas、DuckDB、云数仓大多能读写它,具体支持以官方文档为准。

对你的意义

写数据管道时,中间落地优先用 Parquet,查询时明确列出需要的列,别习惯性 SELECT *,否则列存的好处就白占了;小文件太多反而拖慢,分区方式和文件大小值得调一调。

做 AI 的,训练和评测数据常以 Parquet 存放,按列加载能省内存和 I/O。

普通职场人:Excel 双击打不开 .parquet,得转换或用支持它的工具。记住一点就够了——这个后缀是给程序算的,不是给人看的。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。