Format Atlas

FORMAT COMPARISON

JSON Lines vs Avro

JSON LinesはUTF-8の各行に独立したJSON値を記録し、1件ずつ処理や追記ができます。Avroはスキーマに基づいて型付きレコードを直列化し、Object Container Fileには書き手のスキーマとデータブロックを格納できます。

最終確認: 2026-09-27

JSON LinesとAvro、どちらを選ぶ?

人が読めるイベント記録、行単位のツール処理、簡単なストリーミングや追記にはJSON Linesを検討します。型付きレコード、スキーマ解決、ブロック単位の保存を管理するデータ基盤ではAvroが候補です。スキーマの配布先、読み手、型変換を確認し、どちらかが常に高速・小容量とは決めつけないでください。

JSON Lines向き

行単位で処理するログや記録・JSONレコードのストリーミング交換

  • データを1行ずつ読み書きする
  • テキスト処理ツールで追記・連結する

Avro向き

スキーマ付きレコードデータのシリアライズと交換

  • イベントやレコードをスキーマとともに扱うデータ連携

基本情報を比較

JSON LinesとAvroの主な違いを確認できます。

項目JSON LinesAvro
拡張子.jsonl、.ndjson.avro
MIME Typeapplication/jsonlapplication/avro
主な用途行単位で処理するログや記録・JSONレコードのストリーミング交換スキーマ付きレコードデータのシリアライズと交換
圧縮noneschema_serialization
開く方法テキストエディタやJSON Lines対応ツールで開きます。1行ずつJSONとして検証すると、どのレコードに構文エラーがあるか確認しやすくなります。Avro対応ツールでスキーマ、フィールド、型、レコード内容を確認します。
書き出し・変換JSON配列へ変換するときは全行を配列要素にまとめ、JSON Linesへ戻すときは各要素を1行ずつ書き出します。大量データではメモリ使用量に注意します。JSONやParquetへ変換する場合は、フィールド名、型、null、論理型、スキーマ互換性を確認します。

用途別の選び方

作りたいものや使う場面から選べます。

データを1行ずつ読み書きする

行単位で処理するログや記録・JSONレコードのストリーミング交換

JSON Lines向き

テキスト処理ツールで追記・連結する

行単位で処理するログや記録・JSONレコードのストリーミング交換

JSON Lines向き

イベントやレコードをスキーマとともに扱うデータ連携

スキーマ付きレコードデータのシリアライズと交換

Avro向き

確認ポイント 1

JSON LinesはUTF-8テキストで、1行にJSON値を1つ記録します。末尾の改行があると完全なレコードを連結しやすくなります。Avroのバイナリデータは書き手のスキーマを使って読み、Object Container Fileではブロックとともにスキーマ情報を保存します。

使い分け

確認ポイント 2

JSON Linesは各レコードの項目が同じであることを要求しません。Avroのレコードは宣言済みスキーマに従い、既定値や型昇格など仕様が認める変更を読み手と書き手のスキーマ間で解決できます。

使い分け

選ぶ理由を詳しく

  • JSON Linesはテキストツールで確認しやすい一方、項目名を繰り返し、型の約束をアプリ側に委ねます。Avroは型付きレコードをコンパクトに符号化できますが、読み手には対応ソフトウェアとスキーマが必要です。

よくある質問

JSON LinesはAvroのJSONエンコーディングと同じですか?

いいえ。JSON Linesは通常のJSON値を行で区切る慣習です。AvroにもJSONエンコーディングがありますが、Avroのスキーマやunionの規則に従います。

AvroファイルをJSON Linesのように追記できますか?

AvroのObject Container Fileを単なるテキストとして扱わないでください。ブロックやメタデータを正しく保てるAvroライブラリで書き込みます。

詳しく見る

参考資料・仕様