FORMAT COMPARISON
JSON Lines vs Parquet
JSON Linesは各行に独立したJSON値を記録するUTF-8テキストです。Parquetは行グループと列チャンクを持つバイナリ列指向ファイルで、ログの取り込みと分析用保存では選ぶ基準が異なります。
JSON LinesとParquet、どちらを選ぶ?
イベントを1件ずつ出力・取り込みする段階ではJSONL、型を揃えたデータから必要な列を読む分析ではParquetを検討します。サイズと速度は同じデータ・圧縮・ツールで測定し、常に一方が速いとは扱いません。
JSON Lines向き
行単位で処理するログや記録・JSONレコードのストリーミング交換
- データを1行ずつ読み書きする
- テキスト処理ツールで追記・連結する
Parquet向き
分析基盤向けの列指向データ保存
- 必要な列だけを読み込む大規模な表形式データ
基本情報を比較
JSON LinesとParquetの主な違いを確認できます。
| 項目 | JSON Lines | Parquet |
|---|---|---|
| 拡張子 | .jsonl、.ndjson | .parquet |
| MIME Type | application/jsonl | application/vnd.apache.parquet |
| 主な用途 | 行単位で処理するログや記録・JSONレコードのストリーミング交換 | 分析基盤向けの列指向データ保存 |
| 圧縮 | none | columnar_data |
| 開く方法 | テキストエディタやJSON Lines対応ツールで開きます。1行ずつJSONとして検証すると、どのレコードに構文エラーがあるか確認しやすくなります。 | Parquet対応の分析ツールやライブラリでスキーマ、列、行数、型を確認します。 |
| 書き出し・変換 | JSON配列へ変換するときは全行を配列要素にまとめ、JSON Linesへ戻すときは各要素を1行ずつ書き出します。大量データではメモリ使用量に注意します。 | CSVなどから変換する際は、型、null、日時、文字コード、パーティションの扱いを確認します。 |
用途別の選び方
作りたいものや使う場面から選べます。
データを1行ずつ読み書きする
行単位で処理するログや記録・JSONレコードのストリーミング交換
JSON Lines向きテキスト処理ツールで追記・連結する
行単位で処理するログや記録・JSONレコードのストリーミング交換
JSON Lines向き必要な列だけを読み込む大規模な表形式データ
分析基盤向けの列指向データ保存
Parquet向き確認ポイント 1
JSONLは1行ごとにJSON値を解析でき、末尾改行があればレコードの追記やファイル連結を扱いやすくなります。Parquetはファイル末尾のメタデータで列チャンクを特定するため、JSONLのようなテキスト行の単純追記とは異なります。
使い分け確認ポイント 2
JSONLは行ごとに異なるオブジェクトや配列を記録できます。Parquet変換では列型とスキーマへの対応を決め、欠損フィールドとnull、整数精度、時刻、ネストした値を確認します。
使い分け選ぶ理由を詳しく
- Parquetの列選択は対応リーダーで必要な列チャンクを読む用途に向きます。JSONLの通常の逐次読込みは各行を解析しますが、実際の速度や省容量効果はデータ・圧縮・実装に依存します。