00:02
好,那我们继续往后做啊。嗯。下面就是我们提取这个页面数据和启动数据啊,刚刚分析过了,我们可以放心大胆的先把这个公共字段给他提出来啊,呃,那我们提取之前的话呢,你就把这个呃先给他拿过来。对吧,把这个整个结构给他拿过来啊。这样的话,你才能才能够知道怎么去提取啊好,你对比的这个去说去看啊,呃,首先啊,现在给我们一条数据呢,就是一个这个摘生数据,那我可能从这个摘生里面先把这个common门字段给它提出来啊来,那我们提一下怎么提呢?那就拿我们的这个摘生啊提一下好加上object,然后呢,点什么呀,Get一个。这个object,因为它也是一个对象啊,所以说我们把它提成一个对象,好写成一个common,然后呢,这就是我们的common。Objection。对吧,因为你提出来就是一个战胜对象所说的它还是一个对象,那这个对象提出来以后呢,接下来不就是你提取什么这个具体的这个字段了嘛,对吧,那我就挨个提一下了啊,就是common object叫什么get群,你就挨个写吧,首先第一个是我们的AR,这个AR是什么呀。
01:18
啊。这这些字段你们都还记不记得呀?啊,应该还记得吧。同学们。记不记得,如果你忘了同学啊,你回头下去以后呢,去看一看,就是你们之前在讲这个离线收仓的时候,应该都有对这个字段的一个解释。对吧,像什么用户ID啊,操作系统啊,渠道啊,是否新的呀,这个MD应该是什么?呃,就是那个那个型号对不对,还有什么这个midd就是设备ID对吧,版本,然后呢,这个BA是什么品牌。对吧?啊,到时候自己去看吧,啊来,那我就接着提了啊好Galaxy,然后下面是我们的UID啊啊不要写错了啊UID行,这就是我们的UID哦,诶怎么了写反呀。
02:15
好,再来写这个,其实没有什么技术含量啊,这就是一个力气活哈,对吧,我就不说了啊,直接去写了啊,来下一个是我们的CH啊,这种代码其实写的就。没有什么,这个一。技术含量啊1NEW啊。MD,好,再来写啊,我就迅速把它写出来啊,Mid。好,然后呢,这个是VC啊好盖,然后呢叫BA啊行,那就把它提完了啊。
03:13
对吧。这个代码很简单吧。啊,不做这个过多的解释啊,行,那你提完以后,呃,这样吧,我们顺便把另外一个也提出来啊,就是还有一个也是都有的啊什么呢,你看一下。呃,在我的这个就是页面数据中,我们是不是有一个TS这个字段啊,表示你的这个时间戳啊,然后呢,你的,呃,启动数据里面也有一个TS。对吧,那相当于它其实也是算是一个公共的啊,所以说我们也可以把把它这个提取出来啊,来提取这么。提取这个时间戳啊,时间戳OK,呃,这这个时间戳的话,我们用的是叫这个用用什么用它来去提啊,用这个来去提好来提一下。
04:01
好,Get一个这个string吧,TS对吧,这就把它提出来了啊行,那这个都提出出来以后呢,接下来就是提我们这个页面数据了,呃,那对于我们这个页面数据来讲,来大家看一下你是不是看一下有没有这个配置了吧,对吧,你要去提这个配置了啊OK,那我们就把这个配置呢给他拿过来。好,第一个图放到这,这个就不要了啊,把它放到这,放到这以后呢,我们来去提一下啊,OK,那我们还是使用什么,使用这个摘object,这样get一个还是get一个什么get一个这个加上object啊,然后呢,把这个配置写到这,好这是我们的这个配置OGO。对吧,好,但是我们想的是我们提的是页面数据,但是目前你到底是不是页面数据还不一定,所以说你要对它做一个判断啊,如果说说什么呀,同学们,你的配置object是不等于空的,那是不是还表示它是一个页面数据啊。对吧,好,那如果你是页面数据的情况下,那你就可以什么提取,提取什么页面字段啊页面这个页面,呃,提取什么提取这个配置字段。
05:11
对吧,那你的配置字段提取完以后,那我问大家啊,我们的曝光和事件,这个是不是都是在你的页面中发生的呀。对吧,那就说白了,你有页面数据,我才可能会有曝光和事件,如果说你都没有访问某个页面,你在这个页面中,你你都没有访问某个页面,你怎么可能会有曝光和这个事件呢。对吧,说他们之间的关系你要搞明白啊,因此我确保你是页面数据以后,那我可以把你的页面字段提出来,那我是不是也可以尝试着去什么提取你的,比如说这个曝光数据,对吧?诶提取你的这个提取什么,提取这个事件数据对不对。能听懂我的意思吧,说这个逻辑你一定要先把它想明白了啊,行,那我们就先去提取这个配置字段吧,这个配置字段就这么几个啊,来提一下,那就是我通过这个配置object,然。
06:10
呃。还是一个什么get吧啊,Get string就可以了啊,第一个是我们的配置ID,好就配置ID提出来,然后呢再去提啊,Get string,这个是我们的item,好,我们就叫这个配置item可以吧,然后呢,配置object盖成一个string OK,我们叫这个还有一个item type是吧,先把这个提出来啊,就这两个是一体的啊,叫配置的item type。理解吧,再去提,我们叫do time。好,就叫什么doing time啊。OK,呃,再来提啊,配置object讲get一个string,下面是我们的last配置ID,好,这是last配置ID,好再来提。
07:12
好,叫这个tap。好,就叫这个source来源类型对吧,行,那我就把它提完了。然后了吧,好,我就把它提完了啊,行,那我这个提完了以后啊,大家注意。现在我是不是就可以把你的公共字段。和什么呀,和你的页面访问字段是不是给它组装成一条完整的页面数据,是不是就可以给它发送到卡夫卡了呀,是不是可以发到对应的这个主题里面了呀。可以的吧,啊,所以说你看啊,把这个都提取完成以后呢,下面我们就什么就是发送到,诶发送到什么,发送到这个页面,呃,发送到这个这个主题中啊,我来复制一下吧,就是配置log啊。主题。
08:00
对吧,发生了这个主题。能理解我的意思吧,好,但是你要发出了这个主题,那你就得想明白,我怎么把这些个字段对吧,我怎么把这个这些个字段拼到一起,我要拼成一个什么格式,是不是以什么样的格式,然后再写到你的卡不卡。这你要想明白的啊,当然我们可以什么呀,我们就可以什么,直接还是把它什么拼成一个什么再生数据呗。对不对啊,拼成一个什么加成数据,然后呢,再写到下一层,但是你要这个通过一个一个的字段,然后去拼这个加成数据的话,就会稍起来麻烦。而且的话,你想想啊,我们写进去以后呢,我们后续是不是还要再把它拿出来进行后续的处理啊。对不对。能听到吧,同同学能听懂吧,同学们好,所以说啊,我们会怎么考虑呢?我们会这么去做,就是我们可以把你的就是页面访问单独去给它封装一个并对象,然后呢,我先把这些字段呢,诶封装到并对象中,我可以把并对象直接转换成一个再生字符串给它写走。
09:05
对吧,这样的话我们的封装过程呢,就会变得简单一些,好说是接下来啊,我们要准备一个并对象了啊,那这个并对象的话呢,我就不再给你去挨个去写了哈,我们来到这个病下面,我们去扭上一个SKY类啊,我们就叫这个配置lo。能看到吧,就叫这个配置log了啊,然后呢,点击OK,好,那么为了好用,我把它声明成一个压力类。那上面的样例类的话,我就要给一个小括号了啊,那我们直接把它里面字段都写到这里面就得了啊,那这个字段有哪些呢?你就看呗,哪些字段啊,这些都是吧。对吧,这个TS也是啊,然后呢,再加上什么,再加上这些,这不都是吗。对吧,你就什么挨个把它什么定义到这里面就行了啊,这个没有什么难度啊,我就不再给你去写了啊,我们节省点时间,我来到我的这里面,我直接就复制一下,你看这就是我的页面啊,我把它复制过来。
10:03
放到这。好这就OK了呀,对吧,然后呢,我们挨个去对比一下啊,看看你这个数据都够不够哈,呃,来把这个截一下。好,然后呢,还有这几个。对吧,你可以挨个去对比一下,看看你这个数据呢,都够不够,来我们拿过来去对比一下啊,首先你看啊,这个m mid mid有啊,User ID user ID provin ID,那这个pro ID其实对应的什么?对应的就是你的这个I。对吧,就是你的地区啊,然后呢,这个channel就是ch is new就是new,然后呢,Model就是MD这个OS,这OS在这,然后呢,VS啊,这个VC啊,VC在这,然后呢,还有一个,呃,这个BA啊,BA它里面没有是吧,就那个brand没有对不对,那brand没有的话,那我就加一个呗。啊,Brand就是品牌呗,对吧,那我这里面忘写了,那我就把它加上啊,这个brand是不是它也有了呀,然后TSTS有了吧,来再来往下看。
11:09
呃,你的配置ID配置ID,然后呢,Last配置ID它也有配置item,配置item time是不是都有啊,Doing time doing time。哦,还有一个S是吧,那我再补一个。Source type对吧?好,既然我们都提出来了,就是这些东西我们既然都提出来了,那我就全部都什么都给他这个封装的这个配置log里面啊,当然啊,呃,其实有时候的话呢,我们也会考虑说这个有有些字段,比如说啊某某些字段,我要不要什么给它封装进来,那就得看你后续用不用,如果说我在整个后面的处理过程中,这某些个字段我根本就用不上。那我是不是可以考虑在之前处理的时候,我就不把它放进来了呀,对吧,就相当于这个东西没有了,我就不处理了,因为我在后续我根本用不上你啊。对不对啊,那如果说你也想不明白,说后面到底用不用啊,可能现在不用,但是以后可能会用,那你最好还是什么都给它放进来,那么假如说你这个以后将要用的时候呢,那你就什么直接拿过来用就可以了。
12:09
对不对啊,所以这个处理的方式还是有很多种的啊行,呃,这个有了以后,那接下来我们就可以,嗯,回到这儿,回到这以后干嘛呢?我们先给它封装一个冰对象啊来写到这就封装成啊我们的叫page log,行,那我就写一个吧,Page log等于什么呀,Page log,然后呢,挨个往里面传东西吧。先导个包啊,好挨个往里面传啊,你看按照它的提示,第一个是midd,那我就写MD,第二个是UID,那我们写的是uidd,呃,Promise ID我们应该是叫AR吧,对吧?呃,China我们叫CH,然后呢,A new,我们是is new后面是model,那我们叫MD。然后呢,这个看不见了是吧。好,后面是OS,在后面是VC,在后面是BA,在后面是配置ID,在后面是last配置ID,好,在后面是你的配置item。
13:13
好在后面是你的配置item type对吧?好,再后面是doing time。好在后面是source type。好在后面是你的TOK写进来。呃,有点问题啊,呃,我们这里面定义的这个doing time和这个TS都是一个long类型的是不是,但是我们提出来的它是一个,你看一下啊,我们提出来的这个doingtime它是一个字符串啊,那我们就提升提升到类型的啊,对吧,提升到类型的,然后呢吧,因为你的这个数据啊,大家看一下你的这个数据,我的数据呢,来我的数据其实。就是一个什么呀,数字吧,诶,它就是一个数字啊,然后呢,呃,我们再来看啊,这个另外一个就是你的TSTS是不是也是一个数字呀。
14:03
所以说我是可以把它提成这个long类型的啊,同学们来,那我把这个TS也改一改,把这个提成一个long类型的。好浪类型,来,这个是一个long类型。能明白吧,好,这样的话,你看一下它就能够什么对应起来了啊行,那把这个对象封装好以后,下一步就是什么发送到卡不卡来,这个怎么发送卡不卡呢?我们就直接麦卡不卡U点什么send我去发送,好topic我们刚刚都说过了,就是往这里面发送,那就是DWD叫做配置log的一个配置log的。Topic后面是你的数据,那你数据的话呢,我们要发送的是一个MSG消息,但是现在我是一个对象,对不对。对吧,那你现在你是一个对象,那如果你是一个对象的话,呃,对象的话,那我们就可以考虑怎么做呀。同学们怎么做呀,是不是可以把它转成一个摘数据了呀,对吧,怎么转呢?那就是摘生,诶JA生里面有什么,有two JA生string对不对,那你就可以把你的配置log给他搁进来。
15:08
理解吧啊,这样就可以发送好呃,但其实啊,大家注意你这么写的话呢,它还会有个小问题,有个什么问题呢,给大家去解释一下啊呃,因为我们的这个现在我们所使用的这个摘工具,我们用的是fast摘,就是这个阿里巴巴的这个工具啊。来给大家去看一下。来,往上走。呃,我们用的是这个阿里巴巴的这个工具,然后呢,这个工具里面提供的这个API呢,都是Java的API,你能明白吧,就说白了哈,人家这个代码呢,都写的是什么Java的代码,你看一下是不是都是Java的代码呀。好,但现在的话,我们是在你的这个盖LA中去用的,我们现在写的代码是不是都是盖代码呀。能理解吧,那么他再去转的时候,就把你的一个对象要转成这个摘成字符串的时候呢,它默认是要求你的对象中得有。
16:00
Get set方法的,那么这个事儿你放到你的Java中肯定没毛病,因为你的Java中你封装一个并对象,那你肯定要去提供一个get set方法。但是我们的盖中。可没有这回事儿啊,你说你会单独给他去提供一个概率赛的方法吗?不会,在这个SC中,我们一般不会这么去做,那么他就会有问题,就是说他将来会报错,说我找不到你的什么盖赛的方法等等一些。啊,那就什么很麻烦啊,那这个时候怎么做呢?我们可以这样去做,这个方法里面我们还可以再传一个值。叫这个。呃,叫这个serve config啊,我们我看看找哪一个呀,呃,Serve config随便找一个吧。嗯。就这个吧,啊,就就就这个完事了啊,我看看啊呃,这个吧,诶这个还不行,他还有别的啊,我看一下啊,还有没有别的呀,就是它有两个参数的啊,我记得是。嗯,就这么几个是吧,那我就看看啊,呃,这个是我们传的,然后呢,再来一个config config。
17:03
So con。Config这个还有别的是吧。嗯,诶这个吧,这个啊,你看一下啊呃,那我传上一个这个so con,然后后面这个它是一个可变参数,那我可以可以不传,我就不传了,对吧?好,那这个solid是什么意思呢?你看了啊,我给你写出来你就知道了,我们用上一个。RA,呃,Serve Li z卡Z啊。行,就这个东西啊,然后呢,我们给上一个处,大家来看它的提示啊,它是什么叫做fair的被子。什么叫做fair的base呢?就是基于你的字段来操作,就说白了,将来我再去把你的这个对象,我再转成这个摘成字符串的时候呢,我就不再去找你的get和S的方法了,对吧?我想去拿你的每个字段的时候呢,我就不再去找get和S方法了,我是直接找字段的。
18:04
那么从你的反射角度来讲,对吧?我从你的对象中想去拿到你的每个字段,我就不用get和set方法了,我是直接操作字段的。那么这样的话就OK了啊,所以说我们需要这么去写啊。听懂了吧,如果说你是一个Java的一个对象,那它里面我们大概率情况是有有这个get和set方法的,但是我们的盖是没有的,没有的话你就得这么去写,要不就会报错。OK吧,来这个给大家去说明白啊,行,那到此我们的页面数据我们就提取完了,那提取完成以后呢,我们先不着急往后走,能听懂吧,先不着急往后走啊,我们接下来。呃,我们做一个操作,我们做一个测试,OK吧,来测一把,怎么测呢?那我先把这个程序给它启动起来。好,呃,这个启动起来以后,你就不用再去等着了啊,它是不给你打印那个时间戳了,因为我们这里面没有打印,那我们按照正常的逻辑来讲的话呢,我的错误数据会发送到这个topic,那我的页面数据呢,会发送到你的这个topic,那我现在我是不是只需要启动两个消费者去等着你就可以了呀,对吧,来KF点什么呀,SHKC我消费谁呢?首先你的错误的主题我拿过来,错误的主题就它。
19:29
对吧,我等着你好,那我再起一个。好KC,然后呢,呃,我的这个页面的数据我会发送到这个主题中,好那我就拿过来,好,我先起两个消费者,我等着你。然后对吧,接下来我们就直接去生成一波数据就完了啊,比如说我们就生成2022杠零三杠二零的数据走。
20:03
好,这个地方生成数据,然后呢,这个地方呢,它就可以什么正常把数据呢,往你的这个卡夫卡去去写了,啊在这地方你看不到,那你需要来到这个上去看。诶,你看一下吧,这两个是不是已经有有反应了呀,好,有反应以后来吧,我们看看啊,这就是我们的错误数据啊,你看吧,你随便找出来一条啊,你随便找出来一条,呃。这就是一条吧,对吧,你拿过来,拿过来以后呢,来我们再打开一个这个视图啊,它里面一定是包含你的。I字段的,然后了吧,啊,那说明这个分流的没问题啊,然后呢,再来看我们的这个页面数据啊,这个页面数据的话呢,你就随便找一条吧,这是一条对不对?好,你把这条拿过来,拿过来以后呢,来你也是。放到这里面。格式化一下,你看一下这是不是我们完整的一个页面数据,你把它。定个图啊,定过来以后呢,对对应谁呢,你对应这个东西,对应你的配置log。
21:01
对吧,你去对应一下吧,这里面是不是该有的东西都有啊。能看到吧,就该有的字段我是都有的,那这就是我处理好的一个什么页面数据。理解吧,好,那我们看到这个效果以后,就是我的数据能够正常的进入到你的主题中,而且呢,我也能够什么正常的把它这个消费出来啊,就说白了,我的分流呢,诶写到它里面是没问题的。那我怎么测的呢?我是请了个消费者,我专门去消费了一下他啊,就现在,因为我们的下一下一步处理我们还没有写嘛,那我只能先请一个消费者尝试去消费一下,看看能不能消费到数据,如果能消费到,那说明我前一天的处理是没啥问题的。好吧,啊,这个怎么测试啊,大家这个心里也得知道啊,你别这个写了半天我也不知道对不对,也不知道怎么去测啊,那肯定不行,好吧,来我们就先。写到这儿啊,停一下。
我来说两句