对比
JSON Lines 与 Parquet 的区别
JSON Lines 在每行 UTF-8 文本中保存一个独立的 JSON 值。Parquet 是二进制列式文件,包含行组和列块。
应该选择哪种格式?
逐条输出和摄取事件时可考虑 JSONL;从类型一致的分析数据中读取指定列时可考虑 Parquet。
适用于 JSON Lines
逐行处理的日志和记录 · JSON 记录的流式交换
- 逐条读取和写入记录
- 用常见文本工具追加或合并数据
适用于 Parquet
为分析保存结构化表格
- 只需读取部分列的大型数据集
基本信息
| 项目 | JSON Lines | Parquet |
|---|---|---|
| 扩展名 | .jsonl, .ndjson | .parquet |
| MIME 类型 | application/jsonl | application/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 时可以不确定类型吗?
转换器必须将值映射到模式和类型,无论是显式配置还是推断。应验证映射并拒绝意外值。