• 数据清洗


    数据清洗:
    过滤脏数据,解析字段结构化,数据加上一些默认值,给数据添加某些字段,把数据分类,
    给数据脱敏,给数据加密,修改数据的存储结构...

    可以用什么技术?

    mr hive(udf) spark core

    如何选择 ?

    mr 好处稳定性高,如果数据量非常的大,考虑用mr做清洗

    hive 的udf 就是mr的maptask,也不会运行reducetask 

    spark core : 速度快,基于内存,如果数据量,可能导致内存不够,程序不稳定

    mr: mapreduce 程序,map程序,一般来说不需要写reduce 

    map程序:

     setup: maptask执行之前,先执行一个方法,一般来说声明一些变量,给这些变量赋值,所谓的初始化

      map :  

    处理数据的逻辑,map方法执行很多次,每次的执行的是一个偏移量的数据,(默认情况下这个偏移量是一行数据,但是如果你的数据,不能使用这种默认textinputformat,一般来说,hadoop会其他的inputformat满足一些常见数据需求,但是如果你处理的数据很不常见,万一hadoop没有,需要自定义inputformat,百度有没有类似的,
    sqoop本质是自定义了很多 inputformat,outputformat),对于日志文件来说,数据是一行一行的,偏移量就是一行数据的长度,最终把所有数据执行完之后,map程序就不再执行

    cleanup:map方法完全执行完毕之后,最后执行一次,做一些收尾的工作,例如关闭一些对象,关闭一些连接...

    reduce程序:

    setup: 同上
    reduce : 执行很多次,每次执行 k -》 values,相同key的所有values,一个reduce 有多个key值,就执行多少次
    cleanup: 同上

    案例:用mr做数据清洗
    数据清洗,是大数据开发里面最简单的开发,如果是用java写,会用java操作字符串,会写if else (第一个月),比较麻烦

    讲解一个案例:用mr做数据清洗
    数据清洗,是大数据开发里面最简单的开发,如果是用java写,会用java操作字符串,会写if else (第一个月),比较麻烦

    stringBuffer: 线程安全
    stringBuilder : 线程不安全

    经典案例 ,卖票案例,指的是操作一些共享变量,可能会出现线程安全的问题 

    maptask里面 ,单个task并不存在这个操作共享变量的问题,不会出现线程不安全的问题,更推荐使用stringBuilder  

    String:适用于少量的字符串操作的情况
    tringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
    StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

  • 相关阅读:
    线性规划与网络流24题解题报告
    [bzoj4569][SCOI2016]萌萌哒-并查集+倍增
    [bzoj1002]轮状病毒-矩阵树定理
    [bzoj1005][HNOI2008]明明的烦恼-Prufer编码+高精度
    [bzoj3995][SDOI2015]道路修建-线段树
    [bzoj3993][SDOI2015]星际战争-二分+最大流
    [bzoj3994][SDOI2015]约数个数和-数论
    [bzoj3990][SDOI2015]排序-搜索
    [bzoj4518][Sdoi2016]征途-斜率优化
    [bzoj4515][Sdoi2016]游戏-树链剖分+李超线段树
  • 原文地址:https://www.cnblogs.com/mrr19990327/p/14204980.html
Copyright © 2020-2023  润新知