2012-03-15 15 views
6

マップリバースでAvroを使うのはかなり混乱しています。プレーンテキスト入力とavro出力を持つmapreduceジョブ

AvroJobやAvroMapperのようなクラスは、入力と出力の両方がAvroデータファイルである場合に問題が発生するようです。あなたの入力が普通のテキストの場合はどうですか?

具体的に:

私のマッパーは、入力としてLongWritableキーとテキストの値をとります。テキストキーとMyAvroRecord値を出力します。

マイレクサーはテキストキーとMyAvroRecordsのイテレータを入力として受け取り、テキストキーとMyAvroRecord値を出力します。

これらのテキストキーとMyAvroRecord値をファイルに書き込むOutputFormatを取得するにはどうすればよいですか?

乾杯、 デイブ

答えて

6

[OK]を、ので、私はこれを考え出しました。

テキストキーとMyAvroRecord値を出力するマッパーではなく、AvroKeyキーとAvroValue値を生成する必要がありました。その結果をAvroReducerに直接入力することができました。AvroJob.setOutputSchema()を使用して出力を処理できます(OutputFormatを実装する必要はありません)。

+0

こんにちはデイブ、私は反対でSTHをやろうとしています。私の入力はテキストで、出力は汎用レコードです。私はAvroJob用のAvro入力スキーマを設定して、出力スキーマをGeneric Recordのスキーマに設定しようとしています。しかし、私はAvroJobがそれがプレーンテキストであることを理解できるように、入力スキーマをどのようにまとめなければならないのか分かりません。私は何もしないでsetInputSchema()を使用する必要がありますか? –

0

マッパの出力はAvroKeyとAvroValueである必要はありません。あなたの一般的なアウトプットタイプで、あなたのレデューサーに入力されます。レデューサーでは、Avro変換を行うことができます。 OutputformatタイプをAvroに設定します。

に関して、 sujoy

関連する問題