V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Valyrian
V2EX  ›  Hadoop

Hadoop 的 MapReduce 如何让数据变成全局?

  •  
  •   Valyrian · 2015-03-07 11:34:20 +08:00 · 3812 次点击
    这是一个创建于 3578 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如input文件的key是单词,value是单词出现的次数,现在要用MapReduce算每个单词的频率(其实就是一个Map…)。这个过程用MapReduce怎么搞?需要先数出所有单词的总次数,然后处理每一行都要用这个值。。

    9 条回复    2015-03-11 01:00:33 +08:00
    lcj2class
        1
    lcj2class  
       2015-03-07 12:53:30 +08:00
    你可以这么搞,
    在map阶段,使用counter API在累计单词出现总次数。
    context.getCounter().increment(Integer.valueOf(value))
    之后在reduce阶段,你可以直接取到这个counter
    chaucerling
        2
    chaucerling  
       2015-03-07 12:56:28 +08:00
    1.首先将任务拆分,发给map server
    2.map server处理,输出类似
    word 1
    app 1
    word 1
    word 1
    app 1
    ..
    3.将map输出的结果发给reduce server
    4.reduce server 统计,输出类似
    word 3
    app2
    ..
    5.发给接受结果的服务器储存
    ShiehShieh
        3
    ShiehShieh  
       2015-03-07 13:02:59 +08:00
    map: 得到键值对,word:count.
    Hadoop进行sort.
    reduce: 将sorted的输入进行合并就可以了。
    。。。好像就是一个典型的MapReduce的流程,不需要什么全局变量的好像。。。还是我理解错了楼主的意思?
    Valyrian
        4
    Valyrian  
    OP
       2015-03-07 13:34:41 +08:00
    @lcj2class

    感谢,我试试

    @chaucerling
    @ShiehShieh

    我可能没说清,不是算次数,是算频率=(次数/所有单词次数)
    wzxjohn
        5
    wzxjohn  
       2015-03-07 14:28:37 +08:00 via iPhone
    你的问题不适合用 mr 。。。统计部分适合,但是计算频率部分不适合。
    最好的方法是先用 mr 统计出总数,然后把总数作为常量直接丢到统计次数的 reducer 里面。这样两轮 mr 不需要额外处理可以完成。。。
    monkeylyf
        6
    monkeylyf  
       2015-03-07 14:50:41 +08:00
    这个为什么要用mr来跑? 没有map逻辑没有reduce逻辑也没有并行逻辑
    或者说是1tb的key/value 文件?
    Valyrian
        7
    Valyrian  
    OP
       2015-03-07 23:53:44 +08:00
    @wzxjohn
    @monkeylyf

    不要问我为什么。。学校作业
    有一点reduce逻辑就是单词的次数是要加一下的
    yuankui
        8
    yuankui  
       2015-03-08 11:04:35 +08:00
    这不就是 example 里面的 wordcount 例程吗??
    monkeylyf
        9
    monkeylyf  
       2015-03-11 01:00:33 +08:00
    @Valyrian 你这个结果就是map做的统计 如果input里有重复的key 你就需要跑一下reducer就行了 如果没有重复的 直接local脚本走起了

    凡是还是要问个为什么 如果二逼老师出这种题目你就喷他
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2614 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:55 · PVG 18:55 · LAX 02:55 · JFK 05:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.