Categories: 未分類

Apache Avro

Apache_Avro

Avroは、ApacheのHadoopプロジェクト内で開発された行指向の リモートプロシージャコールおよびデータシリアル化 フレームワークです。データ型とプロトコルを定義するためにJSONを使用し、コンパクトなバイナリ形式でデータをシリアル化します。その主な用途はApacheHadoopであり、永続データのシリアル化形式と、Hadoopノード間およびクライアントプログラムからHadoopサービスへの通信用のワイヤー形式の両方を提供できます。。Avroはスキーマを使用して、エンコードされるデータを構造化します。2種類のスキーマ言語が1つは人間による編集(Avro IDL)用で、もう1つはJSONに基づいてより機械可読です。 Apache Avro 開発者
Apache Software Foundation
初回リリース
2009年11月2日; 11年前 (2009-11-02)
安定リリース
1.10.2 / 2021年3月15日 ; 6か月前  (2021-03-15)
リポジトリ
Avroリポジトリ
で書かれている
Java、C、C ++、C#、Perl、Python、PHP、Ruby
タイプ
リモートプロシージャコールフレームワーク
ライセンス
Apacheライセンス2.0
Webサイト
avro .apache .org
これはThriftおよびProtocolBuffersに似ていますが、スキーマが変更されたときにコード生成プログラムを実行する必要はありません(静的に型指定された言語で必要な場合を除く)。
Apache Spark SQLは、データソースとしてAvroにアクセスできます。

コンテンツ
1 Avroオブジェクトコンテナファイル
2 スキーマ定義
3 シリアル化と逆シリアル化
3.1 Pythonでのシリアル化および逆シリアル化コードの例5 Avro IDL
6 ロゴ
7 も参照してください
8 参考文献
9 参考文献

Avroオブジェクトコンテナファイル
Avroオブジェクトコンテナファイルは、次のもので構成されています。
ファイルヘッダに続いて、
1つ以上のファイルデータブロック。
ファイルヘッダーは次のもので構成されます。
4つのバイトは、ASCII ‘O’ 1(0×01)であるアブロバージョン番号が続き、 ‘B’、 ‘J’は、(バイナリ0x4F 0x62 0x6A 0x01の値)。
スキーマ定義を含むファイルメタデータ。
このファイル用にランダムに生成された16バイトの同期マーカー。
データブロックの場合、Avroは2つのシリアル化エンコーディングを指定します:バイナリとJSON。ほとんどのアプリケーションは、より小さく高速であるため、バイナリエンコーディングを使用します。デバッグおよびWebベースのアプリケーションの場合、JSONエンコーディングが適切な場合が

スキーマ定義
AvroスキーマはJSONを使用して定義されます。スキーマは、プリミティブ型(null、boolean、int、long、float、double、bytes、およびstring)と複合型(record、enum、array、map、union、およびfixed)で構成されます。
簡単なスキーマの例:
{ “namespace” : “example.avro” 、 “type” : “record” 、 “name” : “User” 、 “fields” : [ { “name” : “name” 、 “type” : “string” }、
{ “name” : “favorite_number” 、 “type” : [ “null” 、 “int” ]}、
{ “name” : “favorite_color” 、 “type” : [ “null” 、 “string” ]} ] }

シリアル化と逆シリアル化
Avroのデータは、対応するスキーマとともに保存される場合がつまり、事前にスキーマを知らなくても、シリアル化されたアイテムを読み取ることができます。

Pythonでのシリアル化および逆シリアル化コードの例
シリアル化:
輸入 avro.schemaから avro.datafile 輸入 DataFileReader 、 DataFileWriterから avro.io 輸入 DatumReader 、 DatumWriterスキーマ = avro 。スキーマ。parse (open (”user.avsc” 、 “rb” )。read ()) #書き込むスキーマを知っている必要がApacheAvroの1.8.2によるとwriter = DataFileWriter (open (”users.avro” 、 “wb” )、 DatumWriter ()、 schema )writer 。append ({ “name” : “Alyssa” 、 “favorite_number” : 256 })writer 。append ({ “name” : “Ben” 、 “favorite_number” : 8 、 “favorite_color” : “red” })writer 。閉じる()
ファイル「users.avro」には、JSONのスキーマと、データのコンパクトなバイナリ表現が含まれます。
$ od -v -t x1z users.avro 0000000 4f 62 6a 01 04 14 61 76 72 6f 2e 63 6f 64 65 63 > Obj … avro.codec .nu​​ll.avro.schem a .. {“type”: “rec ord “、” name “:” U ser “、” namespace “:” example.avro “、” fields “:[{” type “:” string “、 ” name “:” name “} 、{“type”:[“int “、 “null”] 、 “nam e”: “favorite_nu mber “}、{” type “: [” string “、” nul l “]、” name “:” fa vorite_color “}]} …… GTb.h … B。 $。、。Alyssa ….. B en ….赤….. GT > bh..B。$ デシリアライズ:
リーダ = DataFileReader (オープン(「users.avro」、 「RB」)、 DatumReaderは()) #スキーマは、データファイルに埋め込まれているため 、ユーザ に リーダ: 印刷 ユーザーリーダー。閉じる()
この出力:
{ U ‘favorite_color’ : なし、 U ‘favorite_number’ : 256 、 U ‘名称’ : U ‘アリッサ’ } { U ‘favorite_color’ : U ‘赤’ 、 U ‘favorite_number’ : 8 、 U ‘名称’ : U ‘ベン}

APIを使用する言語
理論的にはどの言語でもAvroを使用できますが、次の言語にはAPIが記述されています。 C ++
C#
エリクサー
行けHaskell Java Javascript Perl PHP Python
ルビー
さび
Scala

Avro IDL
タイプとプロトコルの定義でJSONをサポートすることに加えて、Avroには、Avro IDLと呼ばれる代替のインターフェイス記述言語(IDL)構文の実験的なサポートが含まれています。以前はGenAvroとして知られていたこの形式は、C / C ++、Protocol Buffersなどと同様の構文で、従来のIDLやプログラミング言語に精通しているユーザーが簡単に採用できるように設計されています。

ロゴ
Apache Avroのロゴは、亡くなった英国の航空機メーカーAvro(元々はAV Roe and Company)からのものです。サッカーチームのAvroFCは同じロゴを使用しています。

も参照してください

 無料のオープンソースソフトウェアポータル
データシリアル化形式の比較 Apache Thrift プロトコルバッファ
エッチング(プロトコル)
インターネット通信エンジン MessagePack CBOR

参考文献
^ 「ApacheAvro:データ交換のための新しいフォーマット」。blog.cloudera.com 。
^ 「ApacheAvro™リリース」。avro.apache.org 。
^ Kleppmann、Martin(2017)。データ集約型アプリケーションの設計(初版)。オライリー。NS。122。
^ 「In-Hadoop分析が重要な3つの理由-データコノミー」。dataconomy.com。
^ 「ApacheAvro™仕様:オブジェクトコンテナファイル」。avro.apache.org 。
^ 「ApacheAvro™仕様:エンコーディング」。avro.apache.org 。
^ 「ApacheAvro™GettingStarted(Python)」。avro.apache.org 。
^ 「ApacheAvro™GettingStarted(Python)」。avro.apache.org 。
^ 「ApacheAvro™仕様:データのシリアル化」。avro.apache.org 。
^ ファント。「GitHub–phunt / avro-rpc-quickstart:Apache AvroRPCクイックスタート。AvroはApacheHadoopのサブプロジェクトです」。GitHub 。
^ 「サポートされている言語-ApacheAvro-ApacheSoftwareFoundation」。
^ 「Avro:1.5.1-ASFJIRA」。
^ 「 Avroの.NET実装-ASFJIRA」。
^ 「サポートされている言語」。
^ “”Avrora — avrorav0.21.1″”。hexdocs.pm 。
^ 「AvroのネイティブHaskell実装」。Thomas M. DuBuisson、Galois、Inc 。
^ 「Avro仕様の純粋なJavaScript実装」。
^ 「RustでのAvroクライアントライブラリの実装」。
^ 「ApacheAvro1.8.2IDL」。
^ 「Avroロゴ」。avroheritagemuseum.co.uk 。
^ 「AVROFC 」avrojfc.org 。

参考文献
ホワイト、トム。Hadoop:決定的なガイド。ISBN 978-1-4493-8973-4。

admin

Share
Published by
admin

Recent Posts

アルトゥーリ・アールト

Artturi_Aalto 見…

2日 ago

アーサーシャレット

Arthur_Shallett…

2日 ago

Artyom Bogucharsky

Artyom_Boguchar…

2日 ago

アーツカタリスト

Arts_Catalyst A…

2日 ago

Asamardhuni Jivayatra

Asamardhuni_Jiv…

2日 ago