首先道歉一下,我没有找到mapreduce的板块,只好把这个问题发到这来了
又来麻烦各位大神了!问题是这样的:
假如在一天时间内,统计每个小时内该网页有多少次访问记录,以及这么多访问记录中有多少个用户,初始格式如下:
hourid url
0         com
0         com
0         cn
0         net
1         org
2         com
2         com
2         cn
........输出格式类似下面:
hourid       visitscount       userscount
0                         4                       3
1                         1                       1
2                         3                       2一个时间段内有几条访问记录,visitscount就是几;userscount指的是(com,cn,net)
如果用wordcount的那种实现方法的话,都是根据key来直接累加value的,完成上面的功能难道要写两个java程序吗,可是我想同时输出到一个文档里面,实在不知道该怎么输出如上所示的格式,还请大神支招。
或者告诉我一下实现思路也可以,我现在是一头雾水,再次感谢啦!!

解决方案 »

  1.   

    Map 输出 key为hourid,value为url
    Reduce 里面迭代处理values,values的大小就是visitscount,values去重复就是userscount
    一个MapReduce
      

  2.   

    谢谢!我获得了visitscount值了,我想问一下values去重复该怎么实现呢
      

  3.   

    谢谢!我获得了visitscount值了,我想问一下values去重复该怎么实现呢
    一个Map变量就可以实现了
      

  4.   

    是一个Set变量就可以实现了
      

  5.   


    嗯,谢谢你的建议,我已完成了。最后还有个问题,希望您能不吝赐教。
    我如何让内容输出到csv文件中呢,也就是保存为csv文件。
    我在reduce中加入CsvWriter之后总是覆盖了原先的数据只保留一条数据。可能是 wr.close(); 的缘故,但去掉也不对。
    很是纠结应该怎么处理
      

  6.   

    你是在reducer里面定义一个全局变量在reduce方法中收集要输出的内容,然后在cleanup方法中做文件写入输出
      

  7.   

    嗯呢   我还有个问题,要是计算每个时间段内每个url出现的次数,该怎么算,
      

  8.   

    用一个Map变量统计URL次数就可以了