第四部分所有的模式涉及一个共同点: 不会改变原有的记录。 这些模式都是寻找数据子集的,不管结果集的规模是小(top10)还是大(像去重结果)。 与第三部分差异是,他们通过对数据的相思子端坐概要与分组来得到数据的高层次视图的。 而过滤更关注理解较小的数据。


    简单随机抽样 :是过滤的一个常见应用,比如提取某字段最高记录,或者随机抽取几条。   抽样可以用来得到 更小的,更具有代表性的数据子集。 很多机器学习算法在大数据集上运行不够高效,所以需要为提取较小的数据子集创建新的模式。
        当选取的比例是一个很小值的时候,你会在输出结果中发现大量的小文件,如果遇到这种情况
                    1 可以设置 reduce 数目为1, 并且不指定 reduce 类。 这就是要求 MapReduce 框架使用一个 identity reduce 简单的手机输出并写到一个文件中。
                    2 hdfs dfs -cat 将输出文件收集到一起。

    布隆过滤        :  对每一条记录抽取其中一个特征,如果特征是布隆过滤器集合中的成员或非成员就保存或丢弃。   作用是预先判定值列表成为热门值的集合( hot values);
                    使用步骤:1 布隆过滤器训练,2 使用布隆过滤器
       布隆过滤使用场景1:
            给定一个用户评论列表,过滤掉声望值小于1500的用户 发出的评论。
            Mapper.setup(){ bloomFilter()} :  在所有 mapper() 执行之前,会先执行 setup()。  在 setup() 中用 布隆过滤器 过滤不属于bloomFilter方法过滤 1500 的用户ID。 bloomFilter 初始化后,setup 会产生一个 HBase 表的连接。
            Mapper.mapper() : 数据通过 bloomFilter() 过滤后 继续使用 ID 到 HBase 进行查询。。

       布隆过滤使用场景2:
            需要一个全量的两个百亿级文件的对比 A 文件百亿行 B 文件百亿行。 每行字符串大小在50KB。
            Mapper.setup(){ bloomFilter }  这里的 bloom 过滤器作用是 将每行 50KB的数据进行压缩 变成一个 shar1 或者 MD5 这样便于存储在内存内,而不至于撑爆内存。

    Top10           :

        Top10场景: 异类分析、 热点分析

            特性: 1 Top 方式的分界线是模糊的。 优势 不必全部排序。   如 hive select x from xxx  desc limit 10.
                       2  需要配置 作业为 一个 reduce 。

            Map code :  
                            1 map() 创建一个 TreeMap 
                            2 map() 添加数据进入 TreeMap。  每次判断是否大于10  大于10 则 treeMap.remove(treeMap.firstKey());
                            3 cleanup() 中遍历 TreeMap数据。 循环写出。  等待 Reduce shuffer


                        

    去重               :
                这个不难理解,就是去除重负记录,MR结构式  M 做数据转换,利用 combiner 做去重,reduce

          使用场景:
                1 数据去重  2 抽取重复值  3 规避内连接的数据膨胀。(如果你在两个数据集之间做一个内连接,并且外检不唯一,  数据A 3000个  数据B 2000 个 最终将是 6 百万记录。 这么多的记录将会集中发给 reduce。 通过使用去重。可以减轻数据膨胀)。

            性能:
                主要考虑 reduce 数目。  从 map 过来的字节数取决于 conbiner 可以消除多少数据。 如果重复记录少见,差不多所有数据都会发送到 reduce 端。  最好的情况是每个 reduce 收到的记录量不小于一个 block 大小。 对于非常大的数据集,可以考虑两倍于集群 reduce 槽容量的大小。

            MR code:比如一个只关心用户ID去重。  用户ID 做键, null 作为值。
                    M : 将数据读取,ID左键, null 做值。
                        job中 设置 combiner。  重复键移除
                    R   : 得到去重 ID 后的操作。
        










    

四 过滤模式 map Only - 作业完成 bloomFilter、top10、去重的更多相关文章

  1. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

      设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的 ...

  2. BUAA_OO第四单元总结性博客作业——UML(Floyd实现规则检查?)

    一.架构设计 1.UML第一次作业——类图 第一次作业基于不同element在UML规格中的从属关系来设计架构.继承了UmlInteraction接口的MyUmlInteraction类是主要的交互层 ...

  3. Hibernate 查询MatchMode的四种模式

    Hibernate 查询MatchMode的四种模式 MatchMode.START:字符串在最前面的位置.相当于"like 'key%'" MatchMode.END:字符串在最 ...

  4. Android 文件访问权限的四种模式

    Linux文件的访问权限* 在Android中,每一个应用是一个独立的用户* drwxrwxrwx* 第1位:d表示文件夹,-表示文件* 第2-4位:rwx,表示这个文件的拥有者(创建这个文件的应用) ...

  5. 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)

    一. AES对称加密: AES加密 分组 二. 分组密码的填充 分组密码的填充 e.g.: PKCS#5填充方式 三. 流密码:   四. 分组密码加密中的四种模式: 3.1 ECB模式 优点: 1. ...

  6. Asp.net的sessionState四种模式配置方案

    sessionState节点的配置 web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer ...

  7. OAuth2简易实战(一)-四种模式

    1. OAuth2简易实战(一)-四种模式 1.1. 授权码授权模式(Authorization code Grant) 1.1.1. 流程图 1.1.2. 授权服务器配置 配置授权服务器中 clie ...

  8. LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)

    参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...

  9. AES加密的四种模式详解

    对称加密和分组加密中的四种模式(ECB.CBC.CFB.OFB) 一. AES对称加密:                                                       A ...

随机推荐

  1. java中三个类别加载器的关系以及各自加载的类的范围

    Java在需要使用类别的时候,才会将类别加载,Java的类别载入是由类别载入器(Class loader)来达到的,预设上,在程序启动之后,主要会有三个类别加载器:Bootstrap Loader.E ...

  2. 路飞学城Python-Day17

    [1.编程范式] 1.面向过程编程 2.面向对象编程 [2.面向过程编程] 面向过程:核心就是过程   什么是过程? 过程指的是解决问题的步骤,先做什么,在作什么,面向过程就像是设计一个流水线,是一种 ...

  3. jQuery更改样式

    $(".input_check_2").css("left","31px"); //更改left的值

  4. BZOJ 2141 排队(CDQ分治)

    我们把每一次交换看做两个插入两个删除.然后就是一个三维偏序.时间一维,下标一维,权值一维. #include<iostream> #include<cstring> #incl ...

  5. springMVC接受数组

    var obj = {}; var params = new Array(); var selected1 = $('#datatable').DataTable().rows('.selected' ...

  6. 第五周-磁盘分区GPT、shell脚本练习、lvm详解

    1. 描述GPT是什么,应该怎么使用 Linux中磁盘分区分为MBR和GPT. MBR全称为Master Boot Record,为主引导记录,是传统的分区机制,应用于绝大多数使用的BIOS的PC设备 ...

  7. 【CS round 34】Minimize Max Diff

    [题目链接]:https://csacademy.com/contest/round-34/task/minimize-max-diff/ [题意] 给你n个数字; 数组按顺序不下降; 让你删掉k个数 ...

  8. 【codeforces 411B】Multi-core Processor

    [题目链接]:http://codeforces.com/problemset/problem/411/B [题意] 处理器有n个核;然后有k个存储单元; 有m轮工作;每轮工作都会给每个核确定一个数字 ...

  9. LaTeX 矩阵

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50054363 LaTeX 写矩阵,需要 ...

  10. 【Hibernate学习】 —— 抓取策略(注解方式)

    当应用程序须要在关联关系间进行导航的时候.hibernate怎样获取关联对象的策略. 抓取策略的方式: FetchType.LAZY:懒载入.载入一个实体时.定义懒载入的属性不会立即从数据库中载入. ...