Avro メモ


  • Avro の記述仕様は「Specification」の項にある。
    • いわゆる構造体以外にも RPC の外形を記述できて、まとめて protocol と呼んでいる。
  • AVDL : DSL として json でない新しい記述方式が追加された。
    • ドキュメントは「IDL language」の項にある。
    • 人が手で記述してメンテナンスするのに適している。
  • AVPR : AVDL の json 版
    • AVDL を記述して、そこから AVPR を生成するワークフローが想定されいるようだ
  • AVSC : AVRO 構造体を記述する JSON ファイル。AVPR の一部分とも言える。
    • json である。
    • json-schema と類似している。json-schema と比べて表現力は小さいが、同時に不安定さも少ない。
    • シリアライザとは分離されている。avro binary シリアライザと同様に json シリアライザも標準的に視野に入っている。
    • protobuf のようなバージョン互換性の強制力はない。ベストプラクティスはある。
    • confluent suite では schema-registry で使われる。
    • 構造体ごとに別の avsc にすることが多いが、仕様上は配列に格納した 1 ファイルでも良い。
      • 別ファイルにする理由は、バリデータの情報元としてコードでファイル名指定する用途があるため
  • binary serializer

avro-tools

さまざまな形式のファイルが入り乱れるので、コマンドごとに何を扱っているのか意識して使う。

  • avro-tools idl
    • AVDL から AVPR に変換する
  • avro-tools idl2schemata
    • 格納されているスキーマから avsc ファイルを生成する
    • avsc 1 ファイルで検証ができるようにネストされた構造体は展開された状態になる
      • 展開されたファイルを手でメンテナンスするのは適していない