00:00
好来我们接着往后说啊呃,那我们现在这个数据呢,就已经什么正常的把它这个拿过来,拿过来以后呢,也能够去做这个打印了啊,就是我们能够看到这个数据是有的,对吧,我们也做了结构的转化,那这个接下来下一步就是这个分流操作。理解吧,来我们接着写啊呃,注意啊,大家这个打印呢,你用完以后一定要把它注释掉。如果你不注释啊,你这个流啊,做了一次打印以后呢,流中的数据就相当于处理完了,你再往后去处理的话,流里面是没数据的。相当于你这地方的打印呢,就相当于把流里面的数据都给它消耗完了,所以说你打印完以后,你测试完以后,一定要注意把它注释掉啊行,下一步3.2。3.2 3.2就是我们的这个分流操作好,那如果你要分流的话呢,你就得先明白我们怎么分流。对吧,那我们的这个思想是这样子的啊,我们的日志数据。对吧,我们包含两种,一种呢叫页面叫什么叫这个页面访问数据,对不对?好页面访问数据,一种呢是我们的启动数据。
01:12
能理解吧,好,这个启动数据的话,它里面就是包含你的这个启动信息啊,还有这个就它里面包含的是这个东西啊呃,它里面包含的是先说它啊,它比较简单,它里面包含的是这个就是公共字段对吧,还有一个是这个就是启动数据啊启动数据。啊,当然还有这个错误信息啊,这个我们主要是关关心这两个啊,主要是关心这两个好,然后这个页面访问数据的话,它里面包含的就比较多了啊有什么呀,首先有公共字段好,然后其次就是你的页面数据,诶你的这个什么曝光数据好,还有就是你的这个事,呃,事件数据。
02:00
对吧?啊,当然呢,还有这个错误数据啊,它其实里面也会有这个错误数据的啊,就是这个错误数据错误对吧?啊,它里面也有这个错误数据啊,它里面也有这个错误数据啊。能理解吧,来这个东西你们现在还知道吗?你们做过离线数仓了,因为你们离线数仓中,你们用的也是这一套东西,所以说呢,应该是理解的。好吧啊,稍后我会带着你去看啊,我现在先跟你说一下,这个我们要分流的一个过程啊,首先你要明白这个公共字段呢,它是共享给我们的页面数据,曝光数据,事件数据,错误数据来去使用的。对吧,就说白了它是共享给他们的,那就说白了,我的事件数据里面其实需要用用到这个公共字段,我的曝光数据也需要用到公共字段,那当然我们的这个启动数据里面的这个启动数据呢,也是需要用到你的这个公共字段。能理解,能理解我的意思吧,好,所以说啊,将来我们要做分流的话,应该就是有这么几种,一种是你的页面,一种是曝光,一种是事件,再一种是你的启动,那么当然还得有一个就是你的错误了,你看这里有这里有错误,这是不是也有错误啊?
03:12
对吧,那么加起来应该是一个两个三个四个,然后加上一个错误,应该是五个,我们要去做这样的一个分流,就是把你的数据呢,给它拆开,拆成具体的页面访问,拆成具体的曝光,拆成具体的事件,拆成具体的启动,拆成具体的。错误,然后呢,给它分流到不同的topic中,能理解我的意思吧,好,那如果你能够把这个分析明白的话,接下来我们就先把这个最终的topic先给它定义出来啊,你看好了又要定义了啊,我们叫做这是我们的,我们分流出去以后的话,应该就叫这个DWD层了,对不对,最终我们是不是写到DWD了呀,那我就叫DWD了啊DWD的,呃,叫配置log。配置log的这个topic OK吧,好,那我就定一下啊,那我就叫什么就叫就叫这个DW配置log topic。
04:12
对吧,当然了啊,我也可以把这个都加上。能理解吧,好来这是一个好再来写,呃,这是我们的页面数据啊页面数据,然后呢,曝光数据的话,那就是DWD的曝光,一定是一定什么呀,是你的页面中曝光的对不对,所以我们叫什么配置display,然后呢,这个topic好字符串,OK,把它写到这来,把这拿过来。好放到这儿,然后呢,后面再来个1018吧,对吧,再来写啊,那我就复制一下吧,这个就都差不多了啊好,这个是我们的,就是页面中的事件,事件我们叫action对吧,事件叫action,那我把它也改成action。
05:02
这就可以了,就是你的来这个写个注释吧啊,这是你的页面数据,页面访问啊,然后呢,这个是我们的页面曝光啊,这是我们的页面事件或者动作啊,页面动作吧,或者事件都可以啊,事件吧,OK,那还得有啊DW,我们叫做start log,然后呢,Topic。对吧,就DW来叫start log的一个topic,然后呢,下滑成1018对吧,这是我们的启动数据。明白了吧,好,那最后再来一个吧,就是DWD的一个什么叫做I a log topic,就是你的错误数据了啊。上拿过来,OK 1018,这是我们的错误数据,好。
06:07
行,那也就意味着我们最终的话呢,是要把这个数据呢,给它分流到这五个topic中的。对吧,就相当于什么拆分了啊,拆分成什么具体的这个明细了,能理解我的意思吧,把它拆分成具体的明细啊好呃,那我们在这个分流之前的话呢,呃,我们就得对你的数据的格式呢,得有一个什么非常明确的认识。对不对啊,这样我才能够分流啊,所以说你看现在我可以怎么做呢?我刚刚呢,已经消费到一波数据了,那这里面的话呢,都是我们的这个日志数据,那我就随便去找吧,我找出来一条,然后呢,我们去看一看这个格式啊,行,那你找出来以后的话,你最好使用这个摘工具去看啊。摘成了什么格式化工具去看对吧,那比如说我就拿过来一条吧,啊呃,我找找一条这个比较好用的哈,呃。这个一看就是你的页面访问啊,但是它里面字段不全啊,不全的话我就不要啊,不要我重新找。
07:02
呃,我找一下这个比较全的啊。这个其实我也不知道哪个全哈,我就这个随便找吧,哎,这个比较全啊。看一下啊,这里面是不是,呃,这还不行,他少那个action的啊,少action。啊,这个是。这也不行啊,嗯,反正得好好找找啊。这也不行。我就随便复制吧啊,总会有行的啊。嗯,这也少一点是吧,这也少一点。搜索一下是吧。好,带action的,那就这一条呗。诶诶。这一条是吧,好来这个。
08:05
好,这个都有了啊,这个都有了,你看有这个common,有配置,有display,有action哦,当然了,其实还会有这个带error的啊,有带的啊呃,有。有没有还带error的呢?呃,带A的算了吧啊,Error的先算了啊,一会我们再来说啊,然后再找一个这个启动的啊start的数据,这是我们的start的数据对吧。好复制出来来,呃,那我再打开一个啊。好格式化一下,你看一下这是我们的这个启动数据啊启动数据,那我再找一个带A的吧。A字段的啊。好,那我再打开一个。行,这个是带error字段的,能看到吧,带error的啊,OK,好,那现在你看我就有了啊,这个是我们的,呃,就是什么页面访问数据,然后呢,这个是我们的启动数据,然后呢,这个是我们的这个带错误的数据。
09:05
能听到吧,好来这里面我们就可以什么开始去做这个分流了啊,那这个分流的话呢,我们先去说一下啊,分流这个错误数据,因为它最简单。好说一下我们这个分流的,分流的这个叫分流的,呃,这个这个标准吧,对吧,或者分流的一个什么这个规则啊规则啊,规则是什么样子呢?就是对于这个错误数据来讲,对吧,错误数据然后呢,什么直接就不做就不做什么,不做任何的拆分啊,只要包含这个错误字段啊,直接整条数据发送到对应的topic就可以了。因为你都是一个错误数据了,你在这个真实的环境里面,你的错误数据肯定是你真正的发生了错误了,那可能你的整条数据里面也没有什么有价值的信息了,那我们就不再去做拆分了,我们就直接发送到对应的topic就完事了。
10:00
理解吧,好,然后呢,对于我们的这个页面数据,好,页面数据我们要什么拆分成,呃,拆分成什么呀,拆分成这个就是拆分成页面访问。呃,拆分的这个页面访问,然后呢这个曝光,然后呢这个事件。这个是一个两个三个。好,然后呢,这个分别啊发送到。啊,发送到这个对应的这个topic理解吧,然后对于我们的这个启动数据啊,就这么启动数据也是啊,这个将什么呀,将这个将启动数据啊,就是启动数据它比较简单啊,它里面是不是只有这个启动数据,是不是只有这个start呀,对吧,你只要什么把它怎么整合到一起啊,整合到一起然后直接发送就可以了啊就是什么发送到对应的topic就可以了啊他也什么这个发送到这个对应的这个topic,这就完事了。
11:01
理解吧,这是我们的分流的规则啊,行,那这个规则有了以后呢,接下来我们就可以开始做这个分流了啊,那分流的话,我们就基于你的再生OB go stream来去做,来走一下。加上OB go stream来去做,那你分流,分流的话就相当于什么,相当于我们的数据,是不是最终要写到你的卡不卡了呀。对吧,就说白了,我的这一个动作啊,这一个动作就要把我的数据呢,全部都处理走了,就不会再有后续的处理了,那你想想这个时候我们就应该用什么算子了呀。是不是得用这个行动算子的呀,同学们。能理解吧,你要去使用这个行动算子了啊,所以说我们就写一下讲这个行动算子,那就是for r DD。对吧,这个如果你记不住的同学,你下去以后自己去回顾一下啊,基本功啊,我不多说,好这个里面给我传过来都是一个RDD,那我就来RDD接收过来,接收过来以后呢,那我就可以什么RDD我去做什么做操作了。对不对,你看啊,RDD里面,我们你的每个RDD中的又是包含很多数据的,那我的RDD是不是得做一个for each了呀,是不是好来这里面呢?他给我传过来的是一个JA object,终于我们就把数据给它提取出来了,JA object,然后接下来这里面就是你的分流过程。
12:22
OK吧?这都是对你这个Spark的一个基本使用啊,我不多解释,你不会的,你自己去看,或者是你下课以后你单独来问我啊,行,那我们分流的话,你看我拿到你的每一条数据以后,那我们就要去看一下你这个数据啊,是什么样子的,那我们先去什么呀,分流错误,因为只要你包含这个艾若字段。那我就直接发走了,我就不做任何的拆分了,我就把你当成错误字段去处理了,所以说我们就先去判断它,要不你拆分了半天了,你发现它里面包含一个IO字段,那你不白拆了吗?对吧,所以我们先去分流什么,先去分流这个错误数据,咋个分流法呢?那你就从你的摘省对象中,你看一下啊,你是不是只要尝试的去获取一下这个IO字段,如果有IO字段,那就表示它是一个错误数据,对不对,说是你要做了啊,就是我们怎么做呀,怎么来去做摘object要get一个string吧。
13:18
对吧,你看一下啊,这个不就是一个把它获取成一个呃讯不就完事了吗?把这个error。对吧,拿上一个这个string啊,盖成一个群,然后呢,来把字段写进来,好,这就是我们的这个error,嗯。他也是个对象是吧?他也是个对象是不是?那如果是对象的话,呃,别盖了,死去了吧。别get了词圈了啊,这样这样,Get什么,Get一个object吧,Get加上object,然后把这个errorr呢写进去,好,这就是我们的errorr op go,好,但是呢,你能不能获取到,这还不一定说,你要判断啊,如果说你的arow object它是不等于空的,你能明白吧,就说白了,我是有这个字段的,好,那么它就是我们的错误数据了。
14:10
理不理解?它就是我们的错误数据了啊,那么这种情况下我就可以。干什么事情啊,就可以什么直接发送,卡不卡了啊,将数据,将错误数据发送到这个主题,就是你的错误主题。理解吧,哎,那这个怎么发送啊。怎么发呀,同学们。啊掉你的卡不卡有T,这不是你分装好的吗?来散散的时候。你的topic,你的message topic,什么topic不就是他吗?对吧,Topic就是它好,那你的message是什么呀?Message不就是我们当前的这个整条数据吗。啊,不是他啊,当前的这个整条数据吗。对不对,那这个当前这个诊疗数据,它是一个战胜对象。
15:02
你对象不能发吧,说你要再把它转成什么呀,就是object。JA op加什么to,什么to string,你再把它转成一个什么字符串,给它什么发走。能看懂了吧?同学们啊,这就是分流你的什么错误数据,那你就把它什么做好了。好,那这个做好以后,下面就是else了,呃,Else的话就什么呀,它就一定不是错误数据了。对吧,这就不是错误数据了,那如果你不是错误数据的话,我们这里面还得判断什么呀,还得判断你是你是这个页面数据呢,还是说你是这个启动数据。呃,能听明白我的意思吧,因为你看一下嘛,我们不是有两种类型嘛,一种是你的页面数据啊,这是你的启动,还有一种是你的什么页面数据,那你就要去判断了。对不对啊,但是呢,你不管是你的页面也好啊,不管是你的页面也好,还是说你是这个启动也好,它们里面是不是都有common啊,而且你看一下这个common是不是都是一样的呀。
16:02
对吧,Common里面的,Common里面这个字段是不是都是一样子的。好,来对比一下,你看看字段是不是都是一样子的。明白明白好,那既然你一样的话呢,那我到了这一步以后,只要我敢明确啊,只要我敢明确你就是不是错误数据了,那我是不是可以大胆的去提取你的公共字段了呀,同学们。对吧,所以说啊,我在这个分流之前的话,我可以什么大胆的什么先去提取,提取什么公共字段,对不对,我把公共字段提出来,因为提出来以后,你将来你的页面数据,你比如说。我们的这个页面数据。对吧,配置访问页面数据,它是我们页面数据,但是呢,这个不全,我们最终写到你的这个页面访问topic中,我是要求你的每条数据中要包含你的公共字段的,因为我们之前说过,这个公共字段就是共享给你的每一个字段去使用的。听懂了吧,所以说我们要把它们拼凑到一起,然后呢,作为什么页面访问写走,把这个曝光呢,跟它拼凑到一起写走,把这个事件呢,跟它拼凑到一起,把它写走。
17:06
理解我的意思吧,啊,是这样的一个处理啊,同学们,OK,所以说我就大胆的去提取公共字段,那我提出来以后呢,我就可以再去判断,如果你是页面数据,那我就按照页面处理,如果你是启动数据,那我就按照启动去做这个处理。好吧,来这是我们这个做了一个简单分析啊好,那我们先停一下。
我来说两句