数据中的每一行都采用以下格式:

用户名,性别,年龄

我们需要回答以下两个问题:

1)多少个男性和几个女性。

2)超过50年的有多少和低于50年的有多少。

有没有办法在单个Map Reduce作业中回答这两个问题?我知道我可以轻松地在2个单独的MR作业中执行此操作,但想避免两次读取同一文件。我只能在一项MR工作中怎么做?

最佳答案

在映射阶段,您可以为每个记录输出2个键:

  • 年轻/老
  • 男性/女性

  • 在减少阶段将计数1作为值和总和,这将为您提供要寻找的4个值,或者输出带有组合信息的1个键:
  • youngmale / oldmale / youngfemale / oldfemale

  • 在减少阶段将计数1相加,得出4个组合值,您可以通过添加计数对来获得所需的答案。

    关于hadoop - MapReduce设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12381609/

    10-12 22:15