00:00
好,那接下来呢,我们就看一下第三章,也就是说今天我们要完成的一件事情,呃,要准备用户行为的。数据DWD层,那现在的用户行为数据我们总共有这么三种,我们只分三种,实际上里边有五种,对吧,大家应该知道的,有错误日志,还有一个动作日志对吧?除了页面启动和曝光是吧,还有动作和错误啊,但是动作和错误呢,对于我们后续的分析我们没有用到,所以这两个呢,我们统一给它放到了页面日志里。啊,统一的放到这一个主题里边,但实际上我们可以分为五种。啊,可以分为五种,好,那现在呢,大家知道我们这个数据呢,已经采集到ods层了,现在我们要根据日志的类型放到不同的主题,那你说最核心我们需要用到什么知识点啊。
01:01
我们需要用到什么知识点?Filter关键字知识点,对,这个是根据关键字去做处理,没问题。弗林格的知识点。对了,测输出流是不是?啊,就是我们要用到测输出流。啊,要用到这个测输出流是这样东西对吧?啊一定要用到这个测出流,那其实我们就可以判断,诶,那你包含的是页面日志,那就输出到页面,你要启动到启动,曝光到曝光,对吧,用测试流,而且我们要分三个日志的话,是不是两个测殊流就够了。一个主流两个测输出流就够了呀,不要用filter filter这个东西呢,如果你是SPA孙,你只能用filter。
02:06
能理解吧,Spark stream里边它并没有测输出流啊,所以呢,我们要用filter做多次过滤,第一个只保留页面日志,第二个只保留启动,第三个只保留曝光,对吧?那里边呢有测输出流,可以给我们处理这个数据,很方便,对吧?所以这里边呢,就是做测输出流好,但是还有除了之外,还有一个事情我们大家看一下啊,这个呢,我们先给它关掉。呃,还有一个东西我们需要说明一下,就这里边还有一个事情,我们需要去做一下什么事呢?Module里边到这个。J莫link,然后呢,R ta log对吧?啊到这个log斯,然后我们打开这个app.log。好,打开它好。那那这个里边呢,我们看一下跟之前的数据相比啊,我们这里面有一个它。
03:04
这有一个is new标题对吧,这个日志格式大家也比较清楚,就是跟你之前在离线书当当中那个日志格式是一样的。跟在离线数仓当中的格式是完全一样的,那我们去找一个JS在线解析给大家看一下这个数据啊,先了解一下这个数据格式。好,第一部分你看啊,先折叠起来,然后呢,打开有common,这明显是一个start启动日志吧,对吧,有个TS,这个common和TS是所有日志都有的,然后中间是star,这是表示启动日志,好,那这个里边来看啊,Common字段当中有这个地区对吧?平台渠道啊,那这里边有一个东西就是叫他去叫他。叫is new表示当前这个mid是否是一个新用户。
04:08
表示的是这个事情,表示的是当前m mid是否是一个新。用户好,那这个时候呢,就会有一个点的,呃,注意啊,这个我们采用的前台买点传过来的,那大家想前台买点过来的数据,这个数据一定对吗。或者说他在什么时候会出问题呀。我们思考一下。对,有才提到了卸载重装之后,他这个过来的数据是不是就有问题啊,那我重装我是新用户吗。
05:00
不是,但是前台做校验的时候。因为你这个前台就生成了这个数据吧,前台我没有历史数据啊,对吧,完全没有,所以它怎么样,它有一些问题。啊,也就是说当什么时候可能有问题呢?当它为一,那大家想啊,一表示新对吧,一表示新,零表示什么呢?零表示老用户,零表示就是老用户对吧?好,那我们思考一下这个问题啊,思考什么问题呢?就是说它为零的时候有没有问题。前台传过来为零的时候有没有问题?对,没有问题,那前台都校验不是新用户,那一定不是新用户了,对不对,所以只有在一的时候。它可能会有问题吧,对吧,那也就是说在我们传过来数据当中有一部分一,我们要改为零输出对不对。
06:10
对吧,有一部分一我们要改为零输出,好,那接下来一个问题,我们什么时候要把这个一改为零呢?用flink的什么知识点来做这个事呢?哎,孙总说了,保存状态。是不是可以啊,当数据第一次来的时候,我们把它写到状态里边之后呢,我看一看这个状态有没有,如果状态已经有了。状态里边已经有了,我们你是一的时候,你是一,状态有了,我是不是改为零,如果你本身是零,我就直接输出吧,对吧?因为我说过在这个数据为零的时候,它是没有问题的,前台校验老用户他没有问题,当我们判断它为一,并且状态有了要改为零,如果说它为一,状态也没有呢?状态是个nu呢,我们是不是也正常输出,但是这个时候我们应该把一个内容写入状态吧。
07:33
是不是对吧,接着用状态编程,那么第一个需求其实就是用状态编程加后来我们再做测输出流搞定。对吧,所以我们来看一下整体啊,第一个识别新老用户啊,那本身客户端的业务有新老用户标识,但是不够准确,所以我们要实时计算再次确认啊,做一个状态确认就好了,第二个利用测输流实现分流的一个处理。
08:01
对吧,三种不同的日志啊,那刚才我们看到启动日志呢,它有这个start,那如果是曝光数据,它有display对吧?如果都不是,那就是一个配置吧,就是一个页面,我们其他的都看作是一个页面数据,对吧?好,那我们这样给大家找一个曝光数据啊。呃,那这个刚好是一个曝光,来CTRLC拿过来啊,曝光数据我们也看一下。先折叠对吧,打开曝光数据里边看啊,还有common。Display诶是一个数组,因为我曝光可以曝光多条数据嘛,对吧,还有一个page页面。啊好,那我们再找一个日志啊,再找一个日志,普通的非曝光的一个页面日志。这个来carr c拿过来啊,Carr好折叠,那这个里边呢,就是一个common,然后配置TS,哎,它没有start,所以我们就根据有没有start,有没有display来区分是否为。
09:05
启动和曝光。对吧?啊,用这种方式来做这个事情就好了啊,用测出流,那么第三件事情将我们分出来的三个流写往三个不同的卡夫卡主题啊,分别叫DWD。Page log啊叫大叫display log。啊,就是做一个分流处理的啊,最后写出去对吧?啊是这样的一个事情,这个呢就比较简单了啊,所以我们今天说过行为数据DWD啊很简单,复杂的是业务数据啊,相对复杂的是业务数据,好这是我们第一个行为数据这边拆分DW层的行为数据,它的一个需求分析,我们要做的事情。
我来说两句