大数据课程——MapReduce编程综合应用(1)

大数据课程——MapReduce编程综合应用(1)

实验内容以及要求

现有大约500万条搜索引擎产生的记录,数据格式如下:
在这里插入图片描述每一行包含6个字段:
字段1代表数据产生的时间;
字段2代表用户,即UID;
字段3代表用户搜索关键词;
字段4代表URL超链接在返回结果中的排名;
字段5代表用户单击超链接的顺序号;
字段6代表用户单击的URL超链接的地址。

请利用MapReduce框架,编写程序实现如下功能:
(1)统计用户数量
(2)统计搜索次数在20次及以上的用户UID及搜索次数
(3)你自己想到的其他功能,并编程实现。

1、统计用户数量

实现思路

  • Map阶段首先分割记录,所有字段存储为一个字符串数组。随后将字段2即用户UID作为输出key,输出value不重要,随意填写即可。
  • Redcue阶段,将输入key作为输出value。用一个静态全局IntWritable变量作为计数器,对每一条输入的key-value对进行编号、计数,并作为输出key即可。
    以上思路即可实现统计用户数量的功能了(最后一位用户的编号即为用户总数)。

Map代码

import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import java.io.IOException;
/**
 * @author: 冰冷灬泡面
 * @date: 2021/3/29 16:35
 * @description:
 * @modifiedBy:
 */
public class StatisticMapper extends Mapper<Object, Text, Text, IntWritable> {
   
    private static final IntWritable one = new IntWritable(1);
    private Text username = new Text();

    @Override
    protected void map(Object key, Text value, Mapper<Object, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
   
        //分割字符串
        String[] strList = value.toString().split("\t");
        //将字段2作为输出key
        this.username.set(strList[1]);
        context.write(this.username, one);
    }
}

Reduce代码

impo
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值