00:00
当时工作怎么可能不考虑数据清洗的问题呢?啊,肯定需要啊,给你的数据有可能你根本就不可用了,一堆东西对吧?啊一定要会考虑数据,因为他在生产环境当中,他给你的数据就是原始数据,原封不动的,什么一个字段两个字段全为空的,都给你运过来了。啊,因为那个数据你不能扔到,因为万一有一天要用呢,就原始数据给你过来了,然后你根据你业务业务线要什么字段,注意刚才。这里的数据不足九行怎么办?会不会说什么?这这个我说了呀,我刚才说了,上课说了,我们这块呢,只是简单的按照字段的个数来做,在生产环境当中,如果对于某一些字段你严格要求的话,就我还举个例子,词类型跟阴等类型。你要做严格的校验呢,我还举个例子呀,对吧。啊,就我们这块呢,就没必要把这个事情搞得那么复杂,我们简单的就按照什么。按照条数来做这个事情,在生长环境当中,根据你具体来说,假如说我这个字段,我真的就是对这个字段要做严重的一个分析,就很多数据呢,都要用到这个字段,这个字段为空,或者说它数据类型不对,这条数据我就认为它是脏数据,这个就是你在过程当中清洗力度的问题,能听懂。
01:17
因为不同的公司清洗力度是不一样的,这是老大给你的条件,哪些数据要,哪些数据不要。你要根据这个条件来写的,而我们说了,我刚才在讲这个事情的时候就强调了一点,我说我们这边呢,只做简单的分析,只看数据的什么字段的个数,我已经说过了啊。OK,那我们接下来写这个MAP6。呃,这块呢,我再建一个DEMO。然后呢,这个叫鼓励。对吧。啊,古立v I de o啊古立V6这样吧,啊,中间呢,还加一个这个杠,这样好看一点啊,同时呢,在这个中间也加一个杠啊,这样呢,大家都加上杠就能好看一点。
02:04
那接下来我们要考虑的问题就是添加音量的问题,对不对?对吧,添加哪些依赖呢。啊,这个依赖要添加哪些依赖呢。是不是哈,都不的依赖还不依赖要不要。要还是不要,跟他们有关系吗?跟have有关系吗?你现在做的这个任务一点关系都没有吧?那把have依赖搞进来干嘛呀?不浪费吗?对吧?你要想一想你要搞什么依赖,你要想一想你之后这个任务过程当中,你要用到什么价包?对吧,用到哪些类,那我们写一下啊,首先呢,一个depend的一个大标签,对吧,这里面呢,放depend啊什么,那我们要的是哈多panda,我们放在这吧,2.702。
03:01
诶2.7.2确定啊,这个呢,还是要缩进一下,这样好看一点哦。然后接下来他要吧,他都一个。还是2.7.2好,我们再看一下还有没有其他的啊,正常这块钱够了啊哈多。哎。他多。雅安呢,因为我们这边呢,不用什么雅安idfs IDF我们导了吗?导了什么,我们导了是哎客户端先导客户端对吧,那我们把HDFS导一下。啊,其实这款呢,你没用到,你不导也行啊,不导也行,2.7.2 2.7.2把哈多相关的,所要写代码的,跟客户端相关的,你都给它导进来啊,都给它导进来就行了,OK啊如果说你不放心的话,你点开看一下对吧?呃,这边呢,有一个video点开这边有一个依赖。三个没问题吧,啊都导进来了,如果说这没有你点一下刷新啊,点开这个,这边有一个project,那有同学可能说这个东西没看见。
04:08
对吧,他是不是没有啊,没有点哪啊,这边有一个这个按钮看见没啊,他点一下就干什么,全部隐藏了吧,啊什么隐藏你点开啊,这个就都有了啊就有了,而且这个位置呢,可以随便随便拖啊,你可以放在。这边对吧,啊,我习惯上还是放在这儿啊,这个位置呢,还有这两个位置顺序都可以调啊,这里面呢,都可以随便拖的,OK,那现在呢,我们依赖搞定了啊依赖搞定了,那接下来呢,写我们那个代码。叫那个ET。一卖,哎,没见包是吧,你见个包啊,喜欢的还放包里看爱的硅谷。点MR吧,啊点MR放在这个包里边。放在一个包里边,它呢,正常的,我们应该还建两个类吧,一个什么reducer,一个driver,那我们思考一个问题,这个地方我们简单的做清洗数据。
05:11
需要聚合吗?需要聚合吗?是不是不需要了,所以reduce可以干什么,不要了吧,哎,可以不要了,我们直接来一个什么EDL的一个。啊一点那个driver啊,我们主要都是写他们俩啊,写他们俩OK,那map继承。Ma对吧,啊,Key是不好写。对吧,这个是。啊,Text txt text,那输出呢。输出。这样,呃,第一个位置是不是只要有一个地方形态就行。
06:01
一行数据嘛。你有说非得按照什么K聚合吗?Reduce我们刚才都讨论的,都可以不要吧就可以不用吧,啊就可以不用,那这个地方呢,我们这样,呃,它呢,我写一个闹就OK了啊,然后呢,这个地方写一个什么text,哎,我说了,呃无论无无所谓哪个写都行,因为我前面写now呢有个好处,它不会排序了。你要把T写在前面,他是不是还是按照这个排序啊,效率就会低一点吧,啊,那么它不会排序了,效率能高一点啊,是这意思啊,其实你写在哪个,写在前面都能完成你最终的一个需求没有。那个任务这里面要做三件事情。我们到说了对吧,那三件事情呢,它相对来说还是比较复杂一点,所以呢,我们还是方法的提取给它拿出去,不要在这里边把业务逻辑写的太多了啊,那首先第一步。获取数据。叫过滤数据。
07:00
第三步干什么呀?写出对,写出。啊写住这,然后呢,把它啊这个这样,他现在老说ID过时了,要更新一下就不更新了。啊。获取数据好写吧。value.for three对吧,看到这个呢,叫or原始的什么S可以了啊,原始的数据,因为我们要对它进行过滤,那过滤这个东西呢,我们要关注一下这个东西呢,我们说了这里面要做三件事情。三件事情全部在这写,整个的逻辑看着比较乱,我们给他提出去OK吧,啊提出去那提到哪呢,这样这边呢,我再建了一个包啊,或者说直接建一个类叫come。点爱的硅谷,点啊,优秀。啊U宝一个工具类叫ETL什么U可以吧。有TL。
08:01
有点吧,啊,在这里边去写一个工具类啊,写一个工具类啊,这个工具类是要干什么事的。对于我们原始数据做那三件事情呢?也就是说它的入参跟出餐都是什么。Three。对吧,都是C令没问题吧,想一下啊,它这个,那这个里边既然是一个工具类,那应该定义成什么sta变成一个什么静态的方法,对吧,直接拿着泪去掉带一个呃,然后呢,呃返回这类型string。我们叫etls tr啊,叫这个方法啊。括号啊,括号这里面呢,要传一个参数spring叫or spring可以吧,啊这样or的spring,然后呢,现在让他不报错,是不是一个什么。闹啊,每天一个闹。钠,这里边其实有可能会纳,因为我们说了,如果说小于九个的话,你还需要不需要,是不是纳出去对吧,也就是说它大于九个,我们再做那些处理吧,啊,如果说小于九的话就不要了啊,这条数据就不要了,好,假设这个东西已经写完了,我们把这个核心逻辑写一下,那这块呢,我们是不是去调ETL。
09:17
U就点一条OI给它拿进去它哦加V这个呢叫ETL过滤后的什么。对吧,啊,最后呢,写出。写出怎么写。是不是context.right写出now readable,是不是可以直接notable.get对吧?好,第二个是一个text text是不是同样的,我们应该定义个什么?全局的吧,啊这块呢,定义全局的什么。Value是不是VALUE6啊,没问题吧,啊前Y6,那我们定一下。Text啊V等于什么?另一个T对吧,我们把准备工作,哎,也就是说写代码的时候先写架子吧,啊先写架子,最后呢,把架子往那补充,那这个地方V,但是V之前应该干什么v.S。
10:14
这个地方写一条。好,我们当时举了个例子,说了这一块呢,有可能返回钠。那那还有必要写出去吗?没有,是不是没有,应该补充一下是不是这写出之前先判断,如果说这个ETL等等于什么,那对吧,等等于now,或者说你用那个string啊,有一个点is bla,对吧?啊是否为空,如果它等于那的话,那我们主动。直接这个方法还需要往下走吗?不需要了,如果他不为档的时候,是不是继续往下走啊,去设置值去写出吧,啊做这个事,那整体的架子我们就搭好了,我们就搭好,我们把它减下。
我来说两句