Format Atlas

对比

JSON Lines 与 Parquet 的区别

JSON Lines 在每行 UTF-8 文本中保存一个独立的 JSON 值。Parquet 是二进制列式文件,包含行组和列块。

应该选择哪种格式?

逐条输出和摄取事件时可考虑 JSONL;从类型一致的分析数据中读取指定列时可考虑 Parquet。

适用于 JSON Lines

逐行处理的日志和记录 · JSON 记录的流式交换

  • 逐条读取和写入记录
  • 用常见文本工具追加或合并数据

适用于 Parquet

为分析保存结构化表格

  • 只需读取部分列的大型数据集

基本信息

项目JSON LinesParquet
扩展名.jsonl, .ndjson.parquet
MIME 类型application/jsonlapplication/vnd.apache.parquet
常见用途逐行处理的日志和记录 · JSON 记录的流式交换为分析保存结构化表格
打开方式用文本编辑器或支持 JSON Lines 的工具打开。逐行验证 JSON,有助于定位语法错误所在的记录。使用支持 Parquet 的工具检查模式、列类型、行数和值。
导出或转换转换为 JSON 数组时,把各行汇集为数组元素;转换回 JSON Lines 时,每个值单独写一行。处理大文件时要留意内存占用。从 CSV 等格式转换时,检查类型、空值、时间戳、编码、分区和行数。

按用途选择

逐条读取和写入记录

逐行处理的日志和记录 · JSON 记录的流式交换

JSON Lines

用常见文本工具追加或合并数据

逐行处理的日志和记录 · JSON 记录的流式交换

JSON Lines

只需读取部分列的大型数据集

为分析保存结构化表格

Parquet

关键点 1

JSONL 可逐行解析。末尾换行有助于追加记录和连接文件。

进一步了解差异

关键点 2

Parquet 读取器通过文件末尾的元数据定位列块,这与直接追加文本行不同。

进一步了解差异

进一步了解差异

应使用相同数据、压缩设置和工具实测,不能认为某种格式始终更快或更小。

  • 转换时确定模式和列类型,并检查字段缺失与 null、整数精度、时间戳及嵌套值。
  • JSONL 的完整记录也可以是标量或数组;转换前应确定不同结构的记录如何映射为表中的行。

常见问题

JSONL 转为 Parquet 时可以不确定类型吗?

转换器必须将值映射到模式和类型,无论是显式配置还是推断。应验证映射并拒绝意外值。

了解详情

参考资料与规范