2

Hadoop を使用して JSON を CSV ファイルに変換し、Hive でそれらにアクセスしています。

現時点では、Mapper は JSON-Smart を使用して JSON を解析する独自のデータ構造を埋めています。次に、レデューサーはそのオブジェクトを読み取り、コンマで区切ってファイルに書き込みます。これを高速化するために、データ構造に書き込み可能なインターフェイスを既に実装しています...

ここで、データ構造オブジェクトに Avro を使用して、柔軟性とパフォーマンスを向上させたいと考えています。書き込み可能なオブジェクトではなく Avro オブジェクトを交換するようにクラスを変更するにはどうすればよいですか?

4

1 に答える 1

5

Hadoop は、SerializationFactory.

デフォルトでは、Hadoop はこのWritableSerializationクラスを使用してインターフェースを実装するクラスの逆シリアル化を処理しますが、Hadoop 構成プロパティ(Serialization インターフェースを実装するクラスの CSV リスト) を設定することにより、インターフェースWritableを実装するカスタム シリアライザーを登録できます。Serializationio.serializations

Avro にはSerialization、クラスにインターフェイスの実装があるAvroSerializationため、これがプロパティで構成するクラスになりio.serializationsます。

Avro には、Avro を入力/出力として使用するための Map/Reduce ジョブを作成するのに役立つヘルパー クラスが多数あります。ソース (Git コピー) にいくつかの例があります。

現時点では、Avro と Map Reduce に関する適切なドキュメントを見つけることができないようですが、他にも適切な例がいくつかあるはずです。

于 2013-02-12T01:25:53.697 に答える