2016-03-29 7 views
0

目標:各ノード、行列のコピーを持つが、行列を読み込み、マッパー(マトリックス、キー)を介して、いくつかの値を計算し、<キーを発し、値>HadoopのMapReduce Streamingで分割サイズを1行に設定する方法は?

私は、マッパーを使用しようとしていますストリーミング経由でPythonで書かれました。レデューサーはありません。 基本的に、私はタスク

https://hadoop.apache.org/docs/current/hadoop-streaming/HadoopStreaming.html#How_do_I_process_files_one_per_mapと同様のアプローチやろうとしている:私はその後

/path/matrix.csv 0 
/path/matrix.csv 0 
...    99 

:私は次の形式で入力ファイル(タスク)(参照だけのためのヘッダ)を生成しをこの作業では、(ハープ・ストリーミング)マッパーを実行します。 Mapperは引数を取得するために行を解析します - filename、key;マッパーはファイル名で行列を読み取り、キーに関連付けられた値を計算します。 キー、値>を発行します。

問題:現在のアプローチが働くと、を正しい結果が得られますが、入力ファイルのサイズは、テキストの100行単なるているので、それは、1つのマッパーでそう、それはいくつかのマッパーに分割取得されていません。小さな入力サイズでも分割を強制するにはどうすればよいですか?

+0

なぜそれが必要ですか?のは、マッパーの数の枠組みに決定を残しましょう。 –

+0

問題の声明を再度お読みください。それが唯一のファイルパスとキーが含まれているため、私の入力は、小型でなければなりません。ファイルは大きくなりますが、各マシンのメモリに収まります。だから、私はちょうど同じキーを持つ同じデータ上の多くのマシンを並行して実行する必要があります。 – alexsalo

答えて

0

は私ではなく、いくつかのマッパーなし減速を行うので、私はちょうど正反対を行うことができていることに気づきました。次のように今私のアーキテクチャは次のとおりです。

  • 薄いマッパーは、単に入力パラメータを読み取り、キーを発し、値
  • 脂肪低減剤は、ファイルを読み込み、受信した鍵とアルゴリズムを実行し、結果
  • セット-DのMapReduceのを発します.job.reduces = 10で並列化レベルを変更する

これは愚かな(間違った)アプローチでしたが、正しいものも明らかではありませんでした。

関連する問題