2012-01-11 10 views
1

"org.apache.hadoop.typedbytes.TypedBytesWritable"のキーと値のペアを持つSequentialファイルがあります。このファイルをHadoopジョブの入力として提供し、マップ内で処理する必要がありますのみ。私は、減らす必要があることは何もしなくてはならないという意味です。Hadoopジョブへの入力としてHadoop Sequentilファイルを読み取る方法は?

1)私はどのようにFileInputFormatをSequentialFileとして指定しますか?

2)地図機能の署名は何ですか。

3)Reduceではなくマップからどのように出力されますか?

答えて

2

1)私はどのようにFileInputFormatをSequentialFileとして指定しますか?

入力フォーマットとしてSequenceFileAsBinaryInputFormatを設定します。 SequenceFileAsBinaryInputFormatクラスの場合はcodeです。ここ

マップ関数の署名されるもの)コード

JobConf conf = new JobConf(getConf(), getClass()); 
conf.setInputFormat(SequenceFileAsBinaryInputFormat.class); 

2です。

マップは、キーと値の型としてBytesWritableを使用して呼び出されます。

3)Reduceではなくマップからどのように出力されますか?

mapred.reduce.tasksプロパティを0に設定します。マップの出力がジョブの最終出力になります。


さらに、SequenceFileAsTextInputFormatをご覧ください。マップはキーと値の型としてTextを使用して呼び出されます。

+0

ありがとうPraveen、私は 'job.setInputFormatClass(SequenceFileInputFormat.class);'を使用しました。それはどんな違いを作るでしょうか?どのようなフォーマットでパフォーマンスが向上しますか? – samarth

+0

わかりませんが、SequenceFileAsBinaryInputFormatはSequenceFileInputFormatより高速です。コードを見てみましたが、それはちょっと複雑で、理解するのに時間がかかります。 –

関連する問題