2011-01-18 25 views
1

HDFSにファイルを作成して、一連の行があり、それぞれ別のマップ呼び出しによって生成されたファイルを作成したいとします。私は行の順序に気にしない、ただ彼らはすべてファイルに追加されます。これをどのように達成するのですか?hadoopでファイルに追加するにはどうしたらいいですか?

これが不可能な場合は、各出力行を別々のファイルに入れるために固有のファイル名を生成する標準的な方法がありますか?

答えて

1

現在、hadoopの既存のファイルに追加する方法はありませんが、それはあなたがとにかくやりたいような音ではありません。 Map Reduceジョブの出力を1つのファイルに出力したいと思うようですが、これは可能です。出力ファイルの数は、レデューサーの数と同じかそれよりも少ないので、レデューサーの数を1に設定すると、1つの出力ファイルが得られます。

あなたが行く前に、それはあなたが本当にしたいことだと思う。パイプラインにボトルネックを作成して、そのデータを1台のマシンですべてのデータに渡す必要があります。 HDFS分散ファイルシステムでは、1つのファイルと複数のファイルを持つことの違いはかなり透過的です。クラスタ外に単一のファイルが必要な場合は、ファイルシステムツールからgetmergeを使用する方がよい場合があります。

+1

この回答は間違っています。 HDFS-200は過去2回のリリースでCDH3に、HDFS-265はApache Hadoop 0.21に含まれています。 –

1

map関数とreduce関数の両方で線を出力する必要があります。言い換えれば、あなたのreduce関数はあまり機能しないpass through関数です。レデューサーの数を1に設定します。出力は、1つのファイル内のすべての行のリストになります。

関連する問題