Avro-serialization-using-parsers
AVRO-パーサーを使用したシリアル化
スキーマに対応するクラスを生成するか、パーサーライブラリを使用して、Avroスキーマをプログラムに読み込むことができます。 Avroでは、データは常に対応するスキーマとともに保存されます。 したがって、コードを生成せずにスキーマをいつでも読み取ることができます。
この章では、パーサーライブラリを使用してスキーマを読み取る方法、およびAvroを使用してデータを*シリアル化する方法について説明します。
パーサーライブラリを使用したシリアル化
データをシリアル化するには、スキーマを読み取り、スキーマに従ってデータを作成し、Avro APIを使用してスキーマをシリアル化する必要があります。 次の手順は、コードを生成せずにデータをシリアル化します-
ステップ1
まず、ファイルからスキーマを読み取ります。 これを行うには、 Schema.Parser クラスを使用します。 このクラスは、さまざまな形式でスキーマを解析するメソッドを提供します。
スキーマが保存されているファイルパスを渡すことにより、 Schema.Parser クラスをインスタンス化します。
ステップ2
以下に示すように、 GenericData.Record クラスをインスタンス化して、 GenericRecord インターフェイスのオブジェクトを作成します。 上記の作成されたスキーマオブジェクトをコンストラクタに渡します。
ステップ3
ステップ4
ステップ5
ステップ6
- create()*メソッドを使用して、指定されたスキーマに一致するデータを保存する新しいファイルを開きます。 このメソッドには、スキーマと、データが保存されるファイルのパスがパラメーターとして必要です。
以下の例では、スキーマは* getSchema()*メソッドを使用して渡され、データファイルはパスに保存されます
/home/Hadoop/Avro/serialized_file/emp.avro。
ステップ7
以下に示すように、* append()*メソッドを使用して、作成されたすべてのレコードをファイルに追加します。
例–パーサーを使用したシリアル化
次の完全なプログラムは、パーサーを使用してデータをシリアル化する方法を示しています-
生成されたコードが配置されているディレクトリを参照します。 この場合、 home/Hadoop/Avro_work/without_code_gen にあります。
次に、上記のプログラムをコピーして、 Serialize.java という名前のファイルに保存します。 次のようにコンパイルして実行します-
出力
プログラムで指定されたパスを確認すると、以下に示すように、生成されたシリアル化されたファイルを見つけることができます。