00:00
好,接下来呢,讲一下这个数据清洗啊,ETL数据清洗,呃,一说数据清洗。都洗过衣服吗?回家洗个衣服吗?没穿过啊,你就没穿过衣服啊。啊,那有可能。没托管。那看遇到谁是吧。那行,那这个呢是数据清洗啊,其实呢,就是对一些脏数据的一个过滤啊,什么类型的数据是张数据呢。简单例子。空各种空数据对吧,各种空行。是不是这数据啊,包括你在这一些,呃,企业开发中应用中,比如说404的。比如说500的这。什么什么数据。是网络连接失败了,哎,等等,这些数据通通的。通干掉,还有一些什么数据呢?哎,其实是有一些网络爬虫的一些IP。就说你这个网站呢,被别人爬重了。
01:02
懂吧,哎,但是这些数据呢,其实他是一些假用户对吧,他就一个人在那爬虫的模拟N多台这个服务器,然后啪啪啪来爬你的数据,那你说。你的日活啊,日增一下子说增加了这个几百万甚至几千万。这种假象对吧,因为这个爬虫它并不能给你带来相应的效果啊,所以说要注意啊,这种数据是坚决要干掉的,OK。呃,在运行核心业务逻辑map之前,往往要对数据进行清洗,清洗掉不符合用户要求的数据。清理过程中只需要运行map程序,不需要reduce。那这个速度就非常快,卖不鸡蛋就把这个数据就搞定了哈。那我们来看一下这个相的需求。去除日志中字段长度小于等于11的日志。我认为你只要你这个日志的长度。不大于11。那你这个数据就不饱和就不够,因为我这是呃,100个字段的相应的数据,那你。
02:01
你只有11个。肯定不合适啊。那我就把认为他是张数据统统干掉。那你看一下吧,这个数据。看不太懂是吧,不知道是啥,那我们来看一下我们这个。在哪呢?在布的布的拉下。过的烟,过的love。在这右键。这里面有多少数据呢?全是偏偏是吧。14600。19条吧啊。这真正的在你企业开发中啊,你天天对的就是这种数据。乱七八糟的是吧。感觉这个毫无规律,呃,其实呢,在开发中的这些字段,每一个字段的含义。来这边都会给你清晰的给你一个手册标注这个字段是干什么的,它的含义是什么。
03:04
不用担心哈。行,那这些数据呢,我们看只需要记录,他现在是有1000。一万多啊。14619 OK,一会再问你啊,能记住的都能25以上。行,那下面呢,我们开始写它的一个麦风网。啊。是。估计被。中午的时候碰了一下。
04:00
好,那下面呢,我们写一下。点蜡了。右键又一个。一个。汽车。那输入的是啊。边的是泰斯特,最终输出什么类型?就是test这一行内容啊。Y6的话是不就。冲就完了,哎。就行了,把所有的输出单的内容全部都传出去。来。那在这里面呢,首先第一件事过题哈。获取一行。哎,就要对这个数据进行解析。
05:00
新数据。也就是说真正的过滤张数据,那过滤这个张数据呢,它肯定也会给你返回一个返回值。你照的?具体的过滤的过程当中,不要把这个过滤的这个方法放到这个外里面去,怎么办呢。Pass。所有的操作放到这个方法里面去做。这样呢,就是呃,显得你这个主体是非常清晰的。它就是一个解析过程嘛,而且这个解析的这个过程,这个算法是经常改变的。会经常改变,所以说在这块呢,你这个为了这个。区的这个健壮性哈啊。把它抽取出来,将这个line传进去,同时还要传一个谁呢?将这个康泰进去。因为我们要在这里面使用一下。OK,那么它无外乎给你返回一个什么结果呢?如果说这个result。
06:10
那就说解析完之后,如果解析失败了,那这条数据我是你不要了。啊,没有意义了嘛,就过滤掉了嘛,啊就没意义了,那如果有意义的话,那你说解析通过了。完了。那就是context.right那right的话是不是就是这一行数据啊。那这一行数据是不是得看啊。输出。Now right get。正常写代码应该是这么去写啊。你上来这个就写它,然后啪一写,这叫只见树木。无限森林是吧啊。你要抽取出来,哎,有一个宏观的概括,我们就要说这么几件事情,那具体这件事情怎么做,那就简单多了,我就给你封装的一个方法里面不管你怎么变,不会影响你外面程序的一个。
07:12
那下面我们来做一下。赵建林,好吧。那在这里面首先传递来的是这么一行内容啊。那这一行内容,我是不是要判断它的长度是否?大于11啊。大于11。那这里面其实呢,它是七米七啊。应该是要对他进行一个。切割啊。啊,你看一下这个数据在这。你要对这个数据呢,进行一个切割啊,工行切割这个工行呢。不一定准哈,一会我告诉你,真正企业开发怎么切。
08:02
那你就先用这个光芒去切,切完之后它的字段如果说小于11,那我就认为它是。当然,企业开发不是这么简单粗暴的啊,一会儿。他跟你说啊,他怎么来。嗯,那我们先简单重报一下啊,Line点斯利特。切完is。切。那它的长度就是if。点认识。长度如果说大于11,那是不是就正确的?那就return。Else。First啊。这个呢是就一个判断条件,说你这个字段长度是否大于一,当然在企业开发中,它会判断多少东西呢。
09:06
每一个字段都要校验。比如说他判断你有,你这里面有一个数据是。网络状态吧。是400呀。还有其他的。是不是还有这个200啊,200是不是正常啊,啊,他要获取出这个字段,判断里面具体的值,哪一个值是否是正确的。比如说是200,那我认为是OK的,但是404或者500全部都要通通的干掉啊等等。那好,那这么就做完了,做完之后呢,我们引入一个计数器。记住,信的是点盖。还记得吧?那你看盖头的时候上面是不是枚举啊?下面是group和counter。主的名称和。那个具体的技术系统名称。那这个呢,我们属于。再卖回去的。啊。
10:00
怎么定?然后呢,这个呢,是我判断的是处的个数。那多老师呢,第二。只要进来一次,那我就加一次一。那下面是content,点盖count。那这个改成麦阶段。Boss的。这样就实现了一个技术的一个效果。那这个麦写完之后,下面呢,我们写一下它的驱动类。
11:09
设置一下啊,稍微看一下信息。报告信息。然后呢,是设置这个件设置map。这是最终的输出的pick value。然后是number text个数为零,因为阶段取消,所以说将它设成零。出路径,输出路径,Pass。这样呢,整个就OK了,这是驱动函数啊,驱动函数呢,输入在这儿,输出在这。买一下奥。还记得weblo里面多少了吗?大点。一是。24可以来了,25。
12:02
来,走。的不得已。邮件打开。看一下多少。就少了,哎13770啊,13770同时来到他的控制台来。看一下控制台这地方是不是有一个卖吧,看分组了吧,啊分组放出了多少次,849错137。不错,13770啊。这个就是它的计数器的一个使用,包括这个数据信息的一个使用。那么真正的在企业开发中,数据兴起什么样的呢?这样的。还是这个数据啊,这是复杂版的。你看啊,他会将你所有的数据封装成一个一个的。一之段啊。特别多,每一个字段都有相应的一个含义,都有相应的它是否符合符合标准的一个要求。那怎么办呢?往下走。
13:02
你看啊。在这地方。你看他对这个所有的字数串是怎么拼的,它是用杠T吗?不是啊,用的是这种复杂。的特殊字符,原因什么呢?像这个空格。还有这个杠T啊等等一些字符,是不是有可能是你在这个本身字段内部就有啊。比如说你是一个TD。啊,假如说这个AB内部它就有一个杠G。对吧,假如说啊,然后拼接起来了,那你。是不是加了一个知道拆分开了。那呢,他就用这种特殊制服。两它分开啊,保证它没有。OK,这个呢,其实具体这个呢,是要跟开发人员进行一个相应的协调的哈,尤其是Java的成员。OK,那下面这是log。正常这几步都是一样的。只不过在这个pass里面干什么呢?具体的解析过程不一样了。
14:00
解析的会非常详细。比如说创建并对象,然后呢,依然是这个切割啊,是一个字段,那么下面在封装的过程当中。可能会再进一步的判断是否大于12,大于12我也这么做。那是否这个EDB大于400,大于400是不是表示错误啊?啊,错误是不是要干掉啊,哎,等等这些。啊,这里面是这种方式去判断的啊。你像这个高中这些。呃,他的具体的要求怎么也得个。个20个的啊,这是少的啊,多的话甚至上百个,每个字段都要去校验,只要这个字段不合法,通通这条数据。删掉啊,这叫清洗操作啊。
我来说两句