2012-02-19 6 views
1

私は単純なマップの削減プログラムに取り組んでいます。私は、キー内の異なる単語ごとに減速器の後に異なるファイルを作成したい。例えば、マップリデュースを実行した後、私は優先1、X 2リダクターで複数出力

優先1 Y 2

優先1 Z 2

priority2 X 2

priority2 yを次に2

ようなものがありますフェーズを減らした後に優先順位に従ってこれらの値をすべて持つPriority1とPriority2と言って、別のファイルが必要です。私はjavaを使用しており、この種の出力を持つために減速機に何を書き込むべきかを知りたいですか?

私はこれが可能かどうか、あるいはこれに近づいたり解決する方法を知りたいだけです。 Hadoop 0.20.203を使用しているため、複数の出力が機能しません。

すべてのポインタが役立ちます。 助けてくれてありがとう! Atul

答えて

0

あなたの基準に基づいて、最初にpartionerクラスを作成する必要があります。

次に、独自のoutputformatクラスとrecordwriterクラスを作成する必要があります。

クラスrecordwriterクラスは、必要に応じて別のファイルに書き込む必要があります。さらに、値をソートする必要がある場合は、キーフィールドにcomparatorクラスを作成します。

+0

具体的には、出力形式を作成するときに、単語ごとに新しいファイルを作成する方法を正確に把握していますか?通常、出力ファイルはOutputFormat.getRecordWriter(context)を呼び出すときに作成されるので、ファイルの名前をどのように知ることができますか? – Huckle

0

MultipleOutputsをご覧ください。

+0

私はMultipleOutputsを見ましたが、hadoop 0.20.203では利用できません。私は私の質問にhadoopのバージョンについて言及するのを忘れていたことをお詫びします。ありがとう!! Atul – user722856

+0

ああ、大丈夫。まあ、私も尋ねたかもしれません。 :)あなたはhttp://stackoverflow.com/questions/2180101/generating-multiple-output-files-with-hadoop-0-20を見ましたか? –

関連する問題