我有一个mapreduce作业,它执行一些处理并生成一个城市的复合键(实现WritableComparable):具有相关计数的水果。现在我想用一个辅助mapreduce工作来链接它,该工作确定每种水果类型的最高计数的城市。
mapreduce作业1的复合键输出示例:
+---------------------+-------+
| city:fruit composite| count |
+---------------------+-------+
| london:apples | 3 |
+---------------------+-------+
| london:bannanas | 2 |
+---------------------+-------+
| london:oranges | 15 |
+---------------------+-------+
| charleston:apples | 20 |
+---------------------+-------+
| charleston:bannanas | 1 |
+---------------------+-------+
| charleston:oranges | 3 |
+---------------------+-------+
| chicago:bannanas | 17 |
+---------------------+-------+
| chicago:apples | 5 |
+---------------------+-------+
| chicago:oranges | 11 |
+---------------------+-------+
作业2的所需输出:
+------------+----------+
| city | fruit |
+------------+----------+
| london | oranges |
+------------+----------+
| charleston | apples |
+------------+----------+
| chicago | bannanas |
+------------+----------+
我怎样才能做到这一点?在我的SQL思想中,复合键将是两列,一列用于城市,一列用于水果。我会按水果分组,排序,并抓住最高计数的行。我无法弄清楚这是如何转化为mapreduce世界的。任何建议将不胜感激!
答案 0 :(得分:1)
<强>过程强>
请注意,对于每个reducer,都会写一个单独的文件。您可以使用HDFS功能轻松地将它们合并。还有可能只有一个减速器,但我不喜欢这种方式,因为它不可扩展。