首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按组合键和排序划分的Java组

按组合键和排序划分的Java组
EN

Stack Overflow用户
提问于 2016-06-15 23:35:53
回答 1查看 1.1K关注 0票数 1

我有一个mapreduce工作,它执行一些处理,并生成一个城市的复合键(实现WritableComparable):带关联计数的水果。现在,我想用一个二级mapreduce作业来链接它,它决定了每个水果类型的最高计数城市。

mapreduce作业1的复合键输出示例:

代码语言:javascript
复制
+---------------------+-------+
| 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的期望输出:

代码语言:javascript
复制
+------------+----------+
| city       | fruit    |
+------------+----------+
| london     | oranges  |
+------------+----------+
| charleston | apples   |
+------------+----------+
| chicago    | bannanas |
+------------+----------+

我怎样才能做到这一点?在我的SQL中,复合键将是两列,一列用于城市,一列用于水果。我会按水果分组,分类,并以最高的数量抓住这一行。我不知道这是怎么转化成mapreduce世界的。如有任何建议,将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 10:16:34

过程

  1. 将您的数据读入一个新的地图减少作业
  2. 将您的信息分割到城市作为关键和水果的复合值:计数
  3. 在减少阶段,你有一个城市的所有价值。现在,您可以在一个循环中迭代所有这些值。把它们分开,记住最大的水果数量和水果。
  4. 现在将数据写入数据库或HDFS。

请注意,对于每个减速机,都会编写一个单独的文件。之后,您可以轻松地将它们与HDFS功能合并。也有可能只有一个减速器,但我不喜欢这种方式,因为它是不可伸缩的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37847512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档