0

私はM / Rプログラムに非常に慣れていません..私はHDFSにこの構造のデータを含むファイルを持っています

EmpId、EmpName、部門、給与、

1231,userName1,Dept1,5000
1232,userName2,Dept2,6000
1233,userName3,Dept3,7000
.
.
...................................

今、私は最高の給与を稼いでいる従業員の名前を見つけたい

私は最高の給与を見つけるためにmap reduceを書きました。私のマッパークラスでは、このような出力を出しました

output.collect("最大値",従業員の給与);

レデューサーで、キー「最大値」の最大値を見つけました。この値をマッパーで使用して、最大の給与を稼いでいる従業員の名前を見つけたいです。レデューサーの出力をマッパーに送信するにはどうすればよいですか入力として?これは私のタスクを達成するための良いアプローチですか?他の提案はありますか?

4

2 に答える 2

1

次の解決策を提案できます

1. Find the max salary using your mapreduce job

2. Read the max salary from hdfs (it should be in the file in output folder of your job)

3. Save the max salary two configuration, say `configuration.set("max.salary", maxSalary);`

4. Create new mapper-only job. The mapper of this job should read maxSalary value from the configuration in the setup method and filter out employers with salary equal to the maxSalary in map method. Pass your data to this job.

その結果、あなたは

PSしかし、より良い方法として、そのような種類のタスクにはHIVEまたはPIGを使用することをお勧めします。複雑な数学/ビジネスロジックを含まない場合、ハイブやピグなどの高レベルの機器で実装する方がはるかに簡単だからです(およびその他)。

于 2013-08-16T08:35:58.940 に答える