栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于hadoop MapReduce的新闻平台用户点击视频统计分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于hadoop MapReduce的新闻平台用户点击视频统计分析

今天又从电脑里面扒拉出来一个以前的一个实验程序,关于hadoop的,使用Java MapReduce原理编程, 某新闻平台用户点击视频统计分析,

放在硬盘里的数据可能没有价值,但是经过大数据分析的数据可能会产生巨大价值

1 数据统计原理分析

本次统计数据量:1048576条

target:当前推荐的视频是否被用户点击了

guid:当前用户的id

这是统计数据目标:

曝光的视频数量: 即用户guid出现的次数

点击次数: 计算当前用户 target=1的次数

点击率: 点击次数/曝光的视频数量

2 MapReduce统计原理

3 代码分析
yarn jar /usr/local/hadoop-jar/clickCount/clickCount.jar com.hadoop.ClickCountDriver
ClickCountDriver.java
package com.hadoop;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;


// 主类:指定Job参数并提交job
public class ClickCountDriver {


    public static void main(String[] args) throws Exception {

        // 创建一个 Job
        Configuration conf = new Configuration();

        // 指定一个 Job
        Job job = Job.getInstance(conf);

        // 指定任务入口----任务主程序
        job.setJarByClass(ClickCountDriver.class);

        // 指定 Job 的mapper类
        job.setMapperClass(ClickCountMapper.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);

        // 指定 Job 的reduce
        job.setReducerClass(ClickCountReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);

        // 指定任务的输入和输出
        // 要处理的所有文件,所在文件夹路径
        FileInputFormat.setInputPaths(job, new Path("/input/sample_train.csv"));
        // 处理结果存放在文件举哀路径(如已存在,需删除)
        FileOutputFormat.setOutputPath(job, new Path("/output/clickCount"));

        // 向 yarn 集群提交job任务     true:打印日志
        job.waitForCompletion(true);

    }
}
ClickCountMapper.java
package com.hadoop;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;



public class ClickCountMapper extends Mapper {

        @Override
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            if (key.get() == 0) {
                return;
            }
            String line = value.toString();
            String[] data = line.split(",");
            context.write(new Text(data[5]), new IntWritable(Integer.parseInt(data[1])));
        }
    }
ClickCountReducer.java
package com.hadoop;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;
import java.math.BigDecimal;

class ClickCountReducer extends Reducer {
    @Override
    protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
        System.out.println(key + ", " + values);
        int clickNum = 0;
        int sum = 0;
        for (IntWritable value : values) {
            if (value.get() == 1) {
                clickNum++;
            }
            sum++;
        }
        double res = new BigDecimal((float) clickNum / sum).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        context.write(key, new Text("点击次数:" + clickNum + "曝光的视频数量:" + sum + ",点击率:" + res));
    }
}
统计结果
点击次数:837曝光的视频数量:15394,点击率:0.05
    
    用户id					点击视频次数 			视频曝光次数		点击概率
000012b09359ac17f324327ac6e600a5	点击次数:0曝光的视频数量:2,点击率:0.0
0000c4eb1da2bae0e94378040912d792	点击次数:0曝光的视频数量:2,点击率:0.0
0000d6629ab40e47a778c8793c937f0b	点击次数:0曝光的视频数量:1,点击率:0.0
00013192d769aaa12bfcdf95dd8ca28d	点击次数:0曝光的视频数量:9,点击率:0.0
0001cbb2efdb8713ef8f59ae70163080	点击次数:0曝光的视频数量:1,点击率:0.0
0001e51aba755cd8e61c4c70966278a7	点击次数:2曝光的视频数量:27,点击率:0.07
00029c2fa4ea7c0321f96489cc644bc3	点击次数:10曝光的视频数量:21,点击率:0.48
00035974e51a890b7ea5bec917d8b9f9	点击次数:0曝光的视频数量:5,点击率:0.0
00037b61eb3e4b32dca07aba0b3f21fb	点击次数:0曝光的视频数量:14,点击率:0.0
00039d6a46ea6e9988b9f3b75ed9f24b	点击次数:0曝光的视频数量:1,点击率:0.0
    					..............
    					..............

可以得出该平台曝光的视频中点击率过低。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号