3.3.2.2.每部电影的平均分
/**

  • 求每部电影的平均分

  • @author DOIT_HANG_GE

  • @version 2019年2月26日
    */
    public class MovieAvgRate {
    public static class MovieMapper extends Mapper<LongWritable, Text, Text, MovieBean>{
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, MovieBean>.Context context)
    throws IOException, InterruptedException {
    String str = value.toString();
    Gson gs = new Gson();
    MovieBean movieBean = gs.fromJson(str, MovieBean.class);
    context.write(new Text(movieBean.getMovie()), movieBean);
    }
    }
    public static class MovieReducer extends Reducer<Text, MovieBean, Text, DoubleWritable>{
    @Override
    protected void reduce(Text key, Iterable iters,
    Reducer<Text, MovieBean, Text, DoubleWritable>.Context context) throws IOException, InterruptedException {
    double sum = 0 ;
    int count = 0 ;
    for (MovieBean movieBean : iters) {
    count++ ;
    sum+=Double.parseDouble(movieBean.getRate());
    }
    double avgRate = sum/count ;
    context.write(key, new DoubleWritable(avgRate));
    }
    }
    public static void main(String[] args) throws Exception {

     Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setMapperClass(MovieMapper.class);job.setReducerClass(MovieReducer.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(MovieBean.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(DoubleWritable.class);FileInputFormat.setInputPaths(job, new Path("D:\\data\\movie\\input"));FileOutputFormat.setOutputPath(job, new Path("D:\\data\\movie\\output1"));job.setNumReduceTasks(1);boolean re = job.waitForCompletion(true);System.exit(re?1:0);
    

    }
    }
    3.3.2.3.每部电影评分最高的N条记录
    /**

  • 每部电影评分最高的n部电影

  • @author DOIT_HANG_GE

  • @version 2019年2月26日
    */
    public class MovieRateTopN {
    public static class MovieTopMapper extends Mapper<LongWritable, Text, Text, MovieBean> {
    Gson gs = new Gson();
    Text k = new Text();
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, MovieBean>.Context context)
    throws IOException, InterruptedException {
    String str = value.toString();
    MovieBean movieBean = gs.fromJson(str, MovieBean.class);
    k.set(movieBean.getMovie());
    context.write(k, movieBean);
    }
    }

    public static class MovieTopReducer extends Reducer<Text, MovieBean, NullWritable, MovieBean> {
    @Override
    protected void reduce(Text key, Iterable iters,
    Reducer<Text, MovieBean, NullWritable, MovieBean>.Context contex)
    throws IOException, InterruptedException {
    ArrayList beans = new ArrayList();
    for (MovieBean movieBean : iters) {
    beans.add(movieBean);
    }
    Collections.sort(beans, new Comparator() {
    @Override
    public int compare(MovieBean o1, MovieBean o2) {
    // TODO Auto-generated method stub
    return o1.getRate().compareTo(o2.getRate());
    }
    });
    if (beans.size() > 2) {
    for (int i = 0; i < 3; i++) {
    contex.write(NullWritable.get(), beans.get(i));
    }
    }
    }
    }

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

     Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setMapperClass(MovieTopMapper.class);job.setReducerClass(MovieTopReducer.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(MovieBean.class);job.setOutputKeyClass(NullWritable.class);job.setOutputValueClass(MovieBean.class);FileInputFormat.setInputPaths(job, new Path("D:\\data\\movie\\input"));FileOutputFormat.setOutputPath(job, new Path("D:\\data\\movie\\output2"));job.setNumReduceTasks(1);boolean re = job.waitForCompletion(true);System.exit(re ? 1 : 0);
    

    }

}
3.3.2.4**.每部电影的点击次数(求热门)**
/**

  • 统计电影的点击次数 按照电影的点击次数倒叙排列输出topN

  • @author DOIT_HANG_GE

  • @version 2019年2月26日
    */
    public class GlobCountTopN {
    public static class GlobCountMapper extends Mapper<LongWritable, Text, Text, MovieBean> {
    Gson gs = new Gson();
    Text k = new Text();

     @Overrideprotected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, MovieBean>.Context context)throws IOException, InterruptedException {String str = value.toString();MovieBean v = gs.fromJson(str, MovieBean.class);k.set(v.getMovie());// 以电影的id为key输出 电影bean为valuecontext.write(k, v);}
    

    }

    public static class GlobCountReducer extends Reducer<Text, MovieBean, Text, IntWritable> {
    HashMap<String, Integer> map = new HashMap<>();
    @Override
    protected void reduce(Text key, Iterable iters,
    Reducer<Text, MovieBean, Text, IntWritable>.Context context) throws IOException, InterruptedException {
    int count = 0;
    for (MovieBean movieBean : iters) {
    count++;
    }
    // 将电影id和电影点击的次数存储在hashmap中
    map.put(key.toString(), count);
    }
    // 在指定完reduce方法后最终都会执行cleanup方法
    @Override
    protected void cleanup(Reducer<Text, MovieBean, Text, IntWritable>.Context context)
    throws IOException, InterruptedException {
    // 对map进行排序
    Set<Entry<String, Integer>> entrySet = map.entrySet();
    ArrayList<Entry<String, Integer>> list = new ArrayList<>(entrySet);
    Collections.sort(list, new Comparator<Entry<String, Integer>>() {
    @Override
    public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
    // TODO Auto-generated method stub
    return o2.getValue() - o1.getValue();
    }
    });
    for (int i = 0; i < Math.min(10, list.size()); i++) {
    context.write(new Text(list.get(i).getKey()), new IntWritable(list.get(i).getValue()));
    }

     }
    

    }

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

     Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setMapperClass(GlobCountMapper.class);job.setReducerClass(GlobCountReducer.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(MovieBean.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.setInputPaths(job, new Path("d:/data/movie/input"));FileOutputFormat.setOutputPath(job, new Path("d:/data/movie/output"));//全局统计  统计的结果只能输出到一个文件中job.setNumReduceTasks(1);boolean res = job.waitForCompletion(true);System.exit(res ? 0 : -1);
    

    }
    }

电影案例[求平均分,评分最高的N条记录,.每部电影的点击次数(求热门)]相关推荐

  1. DayDayUp:2019春节电影《疯狂的外星人》和《新喜剧之王》两部电影观后感

    DayDayUp:2019春节电影<疯狂的外星人>和<新喜剧之王>两部电影观后感 目录 <疯狂的外星人> <新喜剧之王> 今天早上看的<疯狂的外星 ...

  2. oracle数据库中求某行的上一条记录和下一条记录

    利用oracle提供的lead.lag  函数来查询已有记录的上一条.下一条记录. 求id=ae2e829ecffd4715a5c163f829c2e0f5的上一条记录和下一条记录 上一条记录的sql ...

  3. 分析1.6万部电影,找出了华语电影烂片王

    文章讲的是分析1.6万部电影,找出了华语电影烂片王,某天,工作量不饱和(嘘),就在公司上网随便搜了部电影来看,本来还期待着看完能够为搬砖提供灵感,然鹅--事实证明,我想多了. 在把进度条拖了 11 次 ...

  4. 人一生必看的100部电影(全球最佳电影排名榜TOP250)

    人一生必看的100部电影(全球最佳电影排名榜TOP250) 人的一生能看多少部电影?假设我们每周都看一部,从10岁看到80岁将会看3640部.但是我们也不可能喜欢这全部的电影.大多数的可能,我们会根据 ...

  5. 大数据告诉你哪部电影最有影响力

    史上哪部电影最有影响力? 是票房大热的漫威英雄,还是号称影响了一代人的<星球大战>,或者是具有浪漫主义色彩的黑帮史诗<教父>? 其实都不是. " 历史上最具影响力的电 ...

  6. python平均分由高到低顺序排列输出选手编号和最后得分_python 字典的使用案例二:求平均分,并按平均分由高到低输出选手编号和最后得分...

    校园好声音大赛,三位选手得分,由8位评委给出. 请根据评分表,将每们选手的得分去掉一个最高分和一个最低分后求平均分,并按照平均分由高到低输出选手编号和最后得分. dicScores = {'012': ...

  7. 全局变量求平均分最高分最低分_打分函数trimmean,去掉最高最低分求平均分,用它就对了...

    在各种赛事评分时,为了公平起见,一般情况下,都需要去掉一个最高分和一个最低分,再来求平均分,这时候,如果用平时熟悉的求和sum函数和最大max最小min函数组合,当然也是能够求得出来的.但是会感觉没那 ...

  8. Excel忽略0值求平均分,将某一列分类后求平均值

    AVERAGE函数计算平均数 函数功能 AVERAGE函数用于计算所有参数的算术平均值. 函数语法 AVERAGE(number1,number2-) 参数说明 Number1,number2,-:表 ...

  9. python爬虫实战——猫眼电影案例

    python爬虫实战--猫眼电影案例 ·背景   笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信 ...

最新文章

  1. 【FFmpeg】ffmpeg命令详解(三)高级选项
  2. 小米 Play 发布:CPU+GPU 双 Turbo,每个月送 10 GB 流量
  3. 12864输出字符c语言,大家看看该怎么改才能让12864液晶显示屏显示21个字符啊?...
  4. 用户 'XXX\SERVERNAME$' 登录失败。 原因: 找不到与提供的名称匹配的登录名。 [客户端: ]...
  5. laravel artisan
  6. java-判断相同和对象比较大小
  7. jsp+easyui+DataGrid 例子
  8. Eclipse快捷键一览
  9. 阶梯式的岗位技术培训认证体系
  10. 商业智能数据营销该怎么做?
  11. 中国水冷氙气试验箱行业市场供需与战略研究报告
  12. Table(name=“xx“)与Entity(name=“xx“) 问题
  13. rest服务理解以及restful api
  14. Solidity教程:初学Solidity
  15. Android飞机大战游戏报告,基于android的飞机大战游戏设计与开发.doc
  16. 中国脑计划颠覆性创新之路四,用脑科学预测互联网的未来发展趋势
  17. 1.8.9适用的java,Java 7、8、9+版本的一些新特性
  18. JAVA操作共享文件夹文件、下载、读取(windows、Linux通用)
  19. SimpleMind Pro 1.29.1 小巧的思维导图工具
  20. springboot 使用 Spring Boot WebSocket 创建聊天室 2-11

热门文章

  1. spice-gtk-0.35源代码解析之spicy解析
  2. 【leetcode】剑指 Offer 29. 顺时针打印矩阵(shun-shi-zhen-da-yin-ju-zhen-lcof)(模拟)[简单]
  3. Qtum量子链周报(10月22日-10月28日)
  4. 上游模式用于实验室用冷冻机压力和真空度的高精度控制
  5. 2015阿里校园招聘笔试题(8.29 测试开发工程师)
  6. 上海迪士尼“疯狂动物城”主题园区启动主要施工
  7. 你想要的资源我都有(2)
  8. SAP中外币评估(FAGL_FC_VAL)时账期未开导致的问题处理实例
  9. JVM_01 内存结构(深入理解+图解)
  10. Character code tableGB2312