当前位置:首页>python>Python学习【110】:Python数据高手必看:JSON与Parquet格式大比拼

Python学习【110】:Python数据高手必看:JSON与Parquet格式大比拼

  • 2026-09-24 23:21:10
Python学习【110】:Python数据高手必看:JSON与Parquet格式大比拼

一、学前花絮

上一篇文章我们专门对数据库概况做了一个介绍,并针对列存数据库duckdb进行了详细介绍。其中涉及到一种文件格式parquet,其实本质上这种文件并不是duckdb所独有的,它是一种通用的数据格式文件,与JSON一样都是比较流行的数据格式标准。
那么二者有什么不同吗?或者说在什么样的场景选择哪种文件格式?

二、JSON 与 Parquet两种数据格式文件对比并以python示例

在现代数据工程和分析中,JSON 和 Parquet 是两种最常用的开放数据格式。它们都与编程语言无关,有开放标准定义,但设计目标、适用场景和性能特征截然不同。本文将从原理、优劣、应用场景出发,并结合 Python 实战示例,帮助你理解何时该用 JSON,何时该用 Parquet。

2.1 核心定位:文档 vs 表格

简单说:
lJSON = 对象的通用表示(如用户资料、API 响应)
lParquet = 表格的通用存储(如销售记录、日志表)

2.2 优劣势对比

2.3 典型应用场景

1.这种情况用 JSON:
lRESTful API 返回数据
l应用配置文件(如 settings.json)
l小型本地缓存或日志(结构简单)
2.这种情况用 Parquet:
l数据仓库/BI 报表底层存储
l机器学习特征数据集
l跨团队/系统批量数据交换(如 S3 上的数据湖)
最佳实践:
JSON 用于“写入和传输”,Parquet 用于“存储和分析”。

2.4 Python 实战:生成、存储与查询

1. 准备示例数据

2. 保存为 JSON 文件

注意:Pandas 默认将 dict/list 列序列化为 JSON 字符串,失去原生嵌套结构。若需保留,建议用 json 模块逐行处理。

3. 保存为 Parquet 文件

Parquet 能无损保存嵌套数据,且文件更小。

4. 使用 DuckDB 查询两种格式

性能差异:
lParquet:直接列裁剪,毫秒级
lJSON:需全文解析,速度慢且内存高

5. 文件大小对比(实测)

因为用于测试的数据量太小,导致以上的结果:parquet文件比json文件要大。而随着数据量增大,因为parquet有压缩功能,可以让文件更小:
输出结果如下:
我们观察到一个信息,数据行数在50行的时候,json文件比parquet文件要小。而当行数大于100行后,parquet的压缩比起作用了!到10000行的时候,parquet文件相当于json文件大小的15%。

2.5 如何选择?

2.6 以上内容的总结

JSON 和 Parquet 都是语言无关的开放标准,但服务于不同阶段:
lJSON 是“对话的语言” —— 灵活、可读、适合交互。
lParquet 是“仓储的集装箱” —— 高效、紧凑、适合批量处理。
在 Python 中:
l用 pandas.to_json() / read_json() 处理 JSON
l用 pandas.to_parquet() / read_parquet() 处理 Parquet
l用 DuckDB 可无缝查询两者,但 Parquet 性能更优
理想数据流设计:
应用 → JSON(传输) → ETL → Parquet(存储) → DuckDB/Spark(分析) → JSON/CSV(输出)
掌握这两种格式的特性,你就能在数据工程中游刃有余!

三、小结

今天我们针对json和parquet两种数据格式文件的使用进行了详细比较,并用python语言示例。对于大数据行业来说,有着各种需求,同时也有着各种处理方法。我们多学习一种知识,是在为以后的实际项目做技术上的储备。
让我们保持学习热情,多做练习。我们下期再见!

最新文章

随机文章