.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はコード生成なしの動的スキーマ解決のために設計されました。