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 典型应用场景
l跨团队/系统批量数据交换(如 S3 上的数据湖)JSON 用于“写入和传输”,Parquet 用于“存储和分析”。2.4 Python 实战:生成、存储与查询
1. 准备示例数据
2. 保存为 JSON 文件
注意:Pandas 默认将 dict/list 列序列化为 JSON 字符串,失去原生嵌套结构。若需保留,建议用 json 模块逐行处理。3. 保存为 Parquet 文件
4. 使用 DuckDB 查询两种格式
5. 文件大小对比(实测)
因为用于测试的数据量太小,导致以上的结果:parquet文件比json文件要大。而随着数据量增大,因为parquet有压缩功能,可以让文件更小:我们观察到一个信息,数据行数在50行的时候,json文件比parquet文件要小。而当行数大于100行后,parquet的压缩比起作用了!到10000行的时候,parquet文件相当于json文件大小的15%。2.5 如何选择?
2.6 以上内容的总结
JSON 和 Parquet 都是语言无关的开放标准,但服务于不同阶段:lJSON 是“对话的语言” —— 灵活、可读、适合交互。lParquet 是“仓储的集装箱” —— 高效、紧凑、适合批量处理。l用 pandas.to_json() / read_json() 处理 JSONl用 pandas.to_parquet() / read_parquet() 处理 Parquetl用 DuckDB 可无缝查询两者,但 Parquet 性能更优应用 → JSON(传输) → ETL → Parquet(存储) → DuckDB/Spark(分析) → JSON/CSV(输出)掌握这两种格式的特性,你就能在数据工程中游刃有余!三、小结
今天我们针对json和parquet两种数据格式文件的使用进行了详细比较,并用python语言示例。对于大数据行业来说,有着各种需求,同时也有着各种处理方法。我们多学习一种知识,是在为以后的实际项目做技术上的储备。