第四部分所有的模式涉及一个共同点: 不会改变原有的记录。 这些模式都是寻找数据子集的,不管结果集的规模是小(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. SpringBoot学习笔记(15)----SpringBoot使用Druid

    直接访问Druid官网wiki,有详细教程,地址如下: SpringBoot支持Druid地址:https://github.com/alibaba/druid/tree/master/druid-s ...

  2. split方法切割数组

    指定的字符串按"o"截取 当一个base64需要剪去前面的部分的时候 var params={ "imgJustBase64":this.zheng.split ...

  3. python一些被我忽略的知识

    最后一个不小心打错了,刚看到,try ...else 与 while/for else的相同

  4. matplotlib bar函数重新封装

    参考: https://blog.csdn.net/jenyzhang/article/details/52047557 https://blog.csdn.net/liangzuojiayi/art ...

  5. vue-cli3+typescript+路由懒加载报错问题

    vue-cli3的版本是3.4.1 出现的情况是网页显示正常,但是终端一直提示找不到模块: 如果去掉路由懒加载的方式,就没有报错: 原因是以前我们习惯直接写文件名而不加后缀, 现在使用ts时就需要写v ...

  6. cobbler Ubuntu16.04 安装

    cobbler vim /etc/debmirror.conf      sed -i 's/@dists=\"sid\";/#@dists=\"sid\";/ ...

  7. 【BZOJ 1452】 [JSOI2009]Count

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 维护一百个二维树状数组. 二维区间求和. [代码] #include <bits/stdc++.h> #define L ...

  8. [terry笔记]11gR2_DataGuard搭建_primary零停机

    11gR2搭建dataguard环境,此篇文章是利用rman搭建dataguard,这样的好处是primary不用停机,当然,前提条件是primary已经开启归档. 相对于可以停机,零停机传送数据文件 ...

  9. 【iOS开发-47】怎样下载iOS 7.1 Simulator 以及iOS 8离线的Documentation这些文件?

    (1)最官方的解决的方法 在Xcode6里面提供下载. 依照下图找到下载就可以. 一般建议把以下的自己主动检查更新和下载的框框勾起来,这样它会帮我们自己主动下载. watermark/2/text/a ...

  10. ASCII中的控制字符含义

    十进制 十六进制 控制字符 转义字符 说明 Ctrl + 下列字母 0 00 NUL \0 Null character(空字符) @ 1 01 SOH   Start of Header(标题開始) ...