• mapreduce实现数据去重


    原文链接:

    https://www.toutiao.com/i6764933201203823107/

    概念:"数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选。统计大数据集上的数据种类个数、从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重。

    数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。在MapReduce流程中,map的输出<key,value>经过shuffle过程聚集成<key,value-list>后交给reduce。我们自然而然会想到将同一个数据的所有记录都交给一台reduce机器,无论这个数据出现多少次,只要在最终结果中输出一次就可以了。具体就是reduce的输入应该以数据作为key,而对value-list则没有要求(可以设置为空)。当reduce接收到一个<key,value-list>时就直接将输入的key复制到输出的key中,并将value设置成空值,然后输出<key,value>。

    假如我们的数据源是:

    mapreduce实现数据去重

     

    目的:编写MapReduce程序,根据商品id进行去重,统计用户品中都有哪些商品。

    我们先准备模拟生成数据,编写Java代码

    创建一个项目,包结构和类如下

    mapreduce实现数据去重

     

    生成随机数

    mapreduce实现数据去重

     

    生成随机日期

    mapreduce实现数据去重

     

    编写IO

    mapreduce实现数据去重

     

    编写生成代码

    mapreduce实现数据去重

     

    数据生成

    mapreduce实现数据去重

     

    创建Maven项目

    mapreduce实现数据去重

     

    配置pom文件

    mapreduce实现数据去重

     

    mapreduce实现数据去重

     

    mapreduce实现数据去重

     

    创建数据去重类

    mapreduce实现数据去重

     

    编写Map和Reduce

    mapreduce实现数据去重

     

    mapreduce实现数据去重

     

    打包项目

    mapreduce实现数据去重

     

    启动Hadoop

    mapreduce实现数据去重

     

    将数据上传

    mapreduce实现数据去重

     

    将数据上传到HDFS上

    mapreduce实现数据去重

     

    执行jar包

    yarn jar /data/removal/removal-client.jar com.xlglvc.xxx.mapredece.removal.Removal /removalinput/data.txt /removaloutput

    mapreduce实现数据去重

     

    我们查看下效果

    mapreduce实现数据去重

     

    mapreduce实现数据去重

     

    练习:我们可以再写一个mapreduce,统计里面有多少数据?

  • 相关阅读:
    [Mise] Refetch API data when a state value changes with the `$watch` property in Alpine JS
    Android之用自定义的shape去实现shadow效果
    http抓包以及网速限定
    ios成长之每日一遍(day 7)
    ios成长之每日一遍(day 6)
    ios成长之每日一遍(day 5)
    ios成长之每日一遍(day 4)
    ios成长之每日一遍(day 3)
    ios成长之每日一遍(day 2)
    ios成长之每日一遍(day 1)
  • 原文地址:https://www.cnblogs.com/bqwzy/p/12528462.html
Copyright © 2020-2023  润新知