2016-05-13 6 views
1

Amazon EMRを使用していますが、その方法(平行)で出力が複数のファイルに分割されるためです。還元剤の結果を1つのファイルに印刷する方法

しかし、私は代わりに正しいシーケンスで1つのファイルを持っていますが、それは可能でしょうか?減速中

私の最後の行は、彼らが混在しているとして、私は今回の結果をカント、これは私が狂いそうされ、この

for key, value in doc_dict.iteritems(): 
    print key 
    for k, v in value.iteritems(): 
     print k,v 

のようなものです。

+0

ジョブを実行するシェルコマンドは何ですか? 'hadoop-streaming'を使っていますか? – maxymoo

+0

@maxymoo私はruby aws sdkを使用しています。そして、そのhadoop-streamingを受け取ります。 –

+0

'mapreduce.job.reduces'を使用して、おそらくリデューサーの数を1に制限することができます。参照:[マップタスクの数を設定してタスクを減らす](https://stackoverflow.com/questions/6885441/setting-the-number-of-map-tasks-and-reduce-tasks) –

答えて

1

あなたは、一部のファイル

hadoop fs -getmerge /output/dir/on/hdfs/ /desired/local/output/file.txt 

か、あなたの減速中に外部データベースに書き込むし、その外のあなたの結果をリッピング可能性をマージするためのスクリプトを実行する必要があります。 1つのプロジェクトでHBaseが非常に役に立ちました。

+0

私は適切に言う必要があります私はS3バケットに書いていますが、これは同じですか? –

+0

hmmm ...それについては分かりませんが、疑問です。私はあなたがHDFSネイティブに書いていると仮定しました。 – markg

+1

petrosはs3バケットに書き込むのではなく、hdfsに書き込んでから、getmergeを実行した後にアップロードすることができます。 – maxymoo

関連する問題