00:00
好,接下来我们来看一下数据清洗ETL,那ETL呢,是三个单词的一个缩写哈,分别是抽取、转换和加载。呃,你可以去这个智联招聘或者拉钩啊,以及报纸聘去搜索一下ETL工作岗位,那这个呢,也是呃,非常火爆的一个岗位啊,在大数据当中属于一个初级的岗位,那他的薪资待遇呢,一般在十到15K之间。哎,差不多应该能到这个位置,哎,正常水平哈。啊,所以说你只要把今天这个课搞定,那至少今天15K保底了,对吧?啊,那后续你再学的话,那这个薪资逐渐再往上增加,嗯,当然你说你这个一条都没学会,那你就15K就没有呗啊。那行,那我们来看一下这个ETL啊呃,在运行核心业务卖这之前,往往要先对数据进行一个清洗。那清洗数据大家不太清楚,那清洗衣服。洗没洗啊,比如说你衣服上有脏东西对吧?啊,有一些脏东西,那这脏东西我们通过洗衣粉啊,或者洗衣液把它洗掉,那我们要的是一个干净完整的一个衣服。
01:04
是这样的过程,那同样的道理,我们要对一堆数据进行分析处理。分析处理之前,你发现这里面有大量的这个不符合规矩的数据,比如说你从某网站爬虫爬取过来的数据。它里面一些核心字段没有啊。对吧。或者这个爬取啊,我只爬取了其中的几个字段,不够用啊。那这种数据呢,就要把它干掉,那还有或者你传过来的数据,比如说手机号135000没了,你觉得这是一个手机号吗?那这条数据它也不符合规则呀。再给你传过来一个邮箱号,嗯,邮箱。那邮箱号是什么?呃,12345,然后艾特163.com那也不一定符合邮箱的一个基本规则,那这种数据我们也可以按照规则把它过滤掉。哎,大概是这样含义,也就是说把不符合要求的数据过滤掉,那通常啊,我们hi豆腐呢,也可以作为ETL的一个工具之一,那后面呢,还会给大家讲这个用这个啊像Python啊,开啊,啊还有circle,呃,有circle里面包括Spark circle flink circle都可以进行ETL。
02:19
哎,那其中还有多分呢,是其中一种啊。行,那像那个说只在脉部计算处理就行了,不需要聚合,为什么说不需要铝聚合呢。清洗操作,那进来符合要求我就传到下一集,不符合要求是不是这一条就干掉了。那有聚合操作的事儿吗?进来一条,出去一条。对吧,哎,所以说它呢,是没有必要需要的。那么来看啊,首先看一下这个案例吧。所以我们要求去除日志当中个数小于等于11的日志。那比如说把它打开。这是日志,哎,这个日志非常多啊,我不用它打开,我用这个打开吧。
03:00
复制。拿过来,拿过来之后右键打开。这里面多少条呢?这里面一共是14619条,哎,这么多内容,但是这么多内容你看啊,我这一缩小,你会发现有的内容非常长,有的内容非常短,这种非常短。对吧?哎,那我们可以认为啊,比如说短的数据,它不符合我们要求,我们可以把它过滤掉啊。你看这这种信息,信息量比较大的,我把它保留保留下来,我实际上这样一个效果。嗯,好,那你看一下我们这里面的具体要求哈,具体要求是这样。说呀,呃,我们期望呢,输出的每行字段长度都要大于11,那怎么定义每个字段呢?我们这里面用的是空格来切啊。哎,我这里面用空格把这里面切割成一个一个字段。嗯,当然这不是一个标准性的一个处理哈,只是给大家示例,后面呢,我给大家看一下这个企业里面怎么去做的哈。
04:01
那我们先把这个案例给讲了。那行吧,那就获取一行数据,那我在map部集站要做什么事呢?你传进来的是KVKV的偏移量和一行内容,那这一行内容进来之后,我要对这一行内容进行一个切割,切割之后长度判断,符合要求的留下不符合要求的。干掉。那我的key是什么呢?输出的K。那是不是还是一条内容啊,那我把这个V放到这个K的位置数就行了,那我的Y6呢。不需要什么处理吧,那是不是只有拿一个now right数据结束了,哎,其实就是这样一个道理哈,那行,那下边呢,我们来写一下这个程序。来到这里面右键。先创建一个包,那我们这个叫嗯,ETOK。锻炼一个map。好,创建一个map,那继承map。
05:02
好找长的啊。然后呢,泛型第一个呢是long。然后泰斯特好,然后泰斯特now。然后接下来开始处理map。对吧,那这里面老规矩,第一个获取一行。第二个切割。切割,哎,第三个。我们这里面是要判断呢,哎,我得判断你这个日志是否符合要求啊,我们就就ETL吧,嗯,ETL清洗。那清洗完之后,如果返回的数据符合要求,那写出呗,那就可以了,那我随便抓一条数据过来哈。来个他吧。哎,写代码的时候,你把这个日志放上一条,你心里就踏实了哈,行,那首先呢,我们获取一行,那怎么获取呢?VALUE6点to street.y啊line拿到它,拿到它之后呢,对它进行一个切割,Line点斯利特,那我这里面用空格进行一个切割。
06:16
呃,空格切割,我这个切割呀,我直接封装到这里来了。我不在这了哈。我直接封装到这个一天了,直接校验。哎,我定一个方法,这个方法呢。有一个返回值res result。哎,返回的结果如果成功,那我后面写出如果不成功啊嗯。先写什么pass?P2PASSLO这么一个日志。我将这个line。传进去,我同时呢,再把这个上下文环境也传进去,方便后续的一个数据处理,那然后我是if,如果说你这个result。它等于。等于处的话是正常解析通过如果说等于false。
07:02
等于false,我干什么事呢?等于false,我直接return啥意思啊,不做任何处理,这条被干掉了,那如果能够正常传出去,那contest.right往出写,那把这写出去啊,我就把你传进来的这个value,也是这一行内容作为K输出去就行了。然后后面呢是now。点get。哎,正常写代码的一个流程都是这样去写。来先写对应的这个架构,把架构写完了,然后剩下的一些这个具体的解析细节,我们可以让这些实习生或者小弟来写。对吧,哎,这是一个架构师要做的事情。那行吧,那下面我们就来实现一下具体的一个解析规则。对吧,嗯,那你进来的一行,那这回在这里面我们来切,好吧,进来切割。那切割点。斯布利特,那我们用空格来切。
08:04
OK,那拿到的是field斯对吧?啊一个一个的字段呢。在这。对吧,哎,切割完一个一个时段,那切割完之后,我这里的计验规则非常简单,我只是用来判断一下日志的长度。是否大于11就可以了。那来吧啊,If判断file I点点什么。对吧,哎,长度如果说它大于11,我们怎么玩。那直接return to就行了,告诉他这条保留,那如果你返回处,那到这呢是false,那对吧,这行不走了,那不走数走,这直接写出了,哎,好,那下面else。N else'return force。这不就可以了吗?对吧,哎,就这么简单。
09:01
那行,那这次这个呃,Map我们写完了,那接下来我们写一下这个驱动啊,驱动呢,到了这个时候啊,我就不带大家一个一个去写了哈,直接拿过来。因为咱已经写过太多个了。行,直接都粘过来吧,粘过来之后给大家解释一下啊。看我做了哪些操作。应该没问题了吧,据说咱现在都已经变成了一个顶尖高手对吧?嗯,顶尖高手,然后他这是呢,输入的一个数据,输入路径输出路径啊,我这是。另一种方式哈。好,配置信息没问题,价包关联没问题,嗯,卖方没问题,好传进来的key。Test斯特没问题,Now readable,然后呢,这里面要注意,我这里面要取消对应的reduce阶段,那我就将它reduce a number reduce test个数设置为零就可以了。二加回车选长的。二加回车长的。
10:02
Pass。OK,没问题,输入路径和输入路径,那这里面我写的是阿克0R1对吧?哎,其实是为了这个上传打包到集群可以运行,那这里面如果你想给写死的话,你可以这样去写对吧?哎,阿克斯提前赋值,那到这块的时候它不是也给赋上值了吗?哎,这是这种方式啊,那我们查找一下我们的输入路径哈,看我们这个输入路径在哪了。地盘。嗯,Input,呃,我当前这个是input。Log log打开。确认一下对吧,哎,新债的这个行数是多少,是1万,我截个图啊。谢谢。那把列数进来,14619。OK。那它有了有了之后呢,我们运行一下啊,把它收缩。
11:00
呃,Input log没问题,Out put这个地方要改一下。我输出到对应的out put1,刚才是log吧。确认一下啊。对吧,哎,这路径路径没问题,行,那开始执行,右键执行。诶,报了一个错,报了什么错,说OUTPUT1ALREADY exist,那改一个名。111,这回应该可以了啊,这种。好,执行完毕,执行完毕之后,我们来看一下啊,在hioop这里面111右键。打开。打开之后我们要看到什么,就说明没问题了呢,往下走。现在的数据变成多少?我接一个。变成了幺七,呃,137。对吧,啊又生气,你看这是。
12:02
最原始的输入,原始的输入呢,是14619,现在呢,变成了13770,把不符合规则的都已经干掉了。对吧,哎,这是最普通的一种校验方式,那真正在企业里面他会校验哪些数据呢?那今天呢,嗯,海哥就带你们看看这个企业里面。对应的规则要求哈。啊,一般我是。不拿出来的哈,属于杀手锏级别的,呃,这里面是ETL清洗规则啊,比如说我要判断这个字符串它是否是中文中文,那我可以用这个正则去匹配,那如果判断这个字符串内容,它要求是全英文。那就用它去匹配,然后全数字对吧,按全数字,那我给大家玩一个手机号的,对吧,这是手机号的一个匹配规则。那怎么用呢?这是身份证号的哈,这里好多,我拿出其中一个。举个例子。我再扭一个。Java。
13:00
Test ETL。怎么用这面用一下哈,首先。那。CK啊,Track规则,校验规则,那检验规则,这就是手机号的检验规则对吧,那检验规则,然后呢。我再来一个我待处理的数据,比如说其中一个字段叫phone,叫phone对吧,那我的手机号假如说啊是。对吧,哎,这是一个手机号,行,那我现在干一个什么事呢,看啊我。点match匹配,匹配它。我这样去匹配,然后点结果。那我看他返回的结果是true还是false,对吧,这是一个正规手机号,如果他正规手机号的话,他就应该能够通过对吧?中。
14:01
好是返回数啊,那下面我再来,我往后面再加了两位,那是不是就不是一个手机号了,你看行不行。对吧,那以后你看结合我们刚才这个案例,我在企业里面写代码的时候,它会在这里面做详细的判断,我这里面是不是可以取出每一个字段呢?在派斯里面吗?那每一个字段我是不是各种这样。说if啊,If什么呢啊,File,然后比如说取出零,那它点match match,然后你对应的正则表达式是否符合要求,不符合要求我说有条件把它干掉。这样就是在企业里面如何去写这个对应的政治表达式,来来匹配你这里的数据,不符合的直接干掉,这就叫ETL,那当然这里面的规则很多啊,你看啊,这里面规则啊,上百条。看到吗?哎,校验各种企业里面的内容。这就是一个一条公司啊,如果你这项会了的话,你在企业里面现在就可以拿到15K左右的一个薪资,那可能还有一些其他方面条件啊啊,去影响你的最终的薪资。
15:10
OK。
我来说两句