🍋
Menu
.avro Data

Apache Avro(行ベースシリアライゼーション)

Avroはファイル内にJSONスキーマを埋め込む行ベースのデータシリアライゼーションフォーマットです。スキーマ進化に優れ、リーダーとライターが異なるが互換性のあるスキーマを持つことができます。AvroはKafkaメッセージのシリアライゼーションとHadoopデータパイプラインの標準です。

MIMEタイプ

application/avro

種類

バイナリ

圧縮

無劣化

メリット

  • + Schema evolution — add/remove fields without breaking readers
  • + Compact binary encoding with efficient compression
  • + Self-describing — schema embedded in the file
  • + Standard in Kafka and the Hadoop ecosystem

デメリット

  • Row-based — less efficient than Parquet for analytical queries
  • Not human-readable in binary form
  • JSON schema specification has a learning curve

.AVROを使うタイミング

Kafkaメッセージスキーマ、Hadoop/Sparkデータパイプライン、スキーマ進化とコンパクトな行ストレージが優先されるシステムにAvroを使用してください。

技術的詳細

AvroファイルにはJSONスキーマヘッダーの後にDEFLATEまたはSnappyで圧縮されたバイナリエンコードデータブロックが含まれます。読み取り時のスキーマ解決により、コンシューマを壊すことなくフィールドの追加、削除、名前変更が可能です。

歴史

Doug Cuttingは2009年にHadoopエコシステムの一部としてAvroを作成しました。ThriftやProtocol Buffersとは異なり、Avroはコード生成なしの動的スキーマ解決のために設計されました。

.AVROから変換

.AVROに変換

関連フォーマット