00:00
好,按照刚才我们所说啊,那对于这个日志数据呢。我们要将数据。把它拆开,拆成不同的主题,那起码呢得是五个。对吧,那这个东西我们应该怎么做呢。就是大家想一下,就是我们要把这个topic log这个数据,把它拆分成五种,写到五个不同的。主题里边。对吧,我们要写到五个不同的主题里边,那咱们应该怎么做啊。我们应该怎么做?那我们还是像这个,呃,DM层一样吗?就是维表数据,我也搞一个这个。配置信息表,哎,配置信息里面呢,写上。有几种?数据类型,然后呢,我去过滤。
01:01
需要吗?注意这个就不需要了,因为日志数据呢,他从最开始定下来的时候,对吧,那就是这几种日志就。不会再改变了。一般的来说啊,对于公司来说,就很少会去动这个日志数据。种类的啊,一般就是用户行为产生的,那就这些种,最早的时候买点对吧,啊就买这些就这一种,所以呢,我们就直接可以干什么,就类似于我们最早讨论的方案写死吧,那你可能好几年或者一年多大半年对吧,类似于可能日志数据呢,诶偶尔加这么一种,加完之后呢,因为多加了一个买点嘛,可能多了一种,对吧,诶或者接下来一年多。才加一种,那这个呢,我是能允许说我稍微的修改一下代码重写对吧,因为它的频率非常非常低。所以我们就不需要搞得那么麻烦,还得去搞一个配置信息表,然后呢,做这个过滤,我们直接在代码里边写死分五种对吧,那我们就分成五个流出来就好了嘛,对吧?那用什么知识点啊,我现在呢想把topic log消费过来,它是一个流吧,我要拆分成五个流,我应该用fli的什么知识点。
02:29
啊,对了,用测输出流对吧?啊,要用到我们的测输出流。对测输入流,所以呢,咱们最核心的就是用测出物流,然后呢,把。第一个。反正我随便挑一个放到主流,其他四个放到特殊物流是不是就好了?对吧,咱们做的这样事情啊,就是把其中一个写到主流,把其他的都写到侧输出流就好了。对吧?啊,咱们要做的就是这样的一个事情啊呃,那除了这个之外,我们还要做一点事情啊,就是什么呢?来看一下,首先第一个我们做一个数据的清洗啊,最核心的呢,当然是分流啊,最核心的是这个分流,这个我们到时候最最最核心的业务,对吧?在这个之前我们还有两个事情要做一下,第一个呃,过滤。
03:21
因为我们可能会遇到这种脏数据,对吧,做一个ETL过滤,但是有同学可能在想,那我们之前在这个ETL连截器in the s里边不做了这个非接数据的过滤嘛,对吧,你这还写一份,其实嗯,确实如果生产环境当中呢,这你就可以不写了。啊,可以不写了,那为什么我们还放在这儿等会儿呢,还得去写一下啊,那为什么呢?因为我们未来。要做测试。对吧。嗯,行为数据呢。我们要是把那个Mo打开,它一次造的数据太多了。啊,那我们未来呢,可能会手动启动一个生产者往里边去发数据,这样的话我们手动一条一条书。
04:08
对吧,那这样会更好一点,更容易看到这个结果能明白吧,所以呢,呃,那如果你不做这个过滤,万一你在输入数据的时候,你怎么样?诶你一粘它把这个粘进去了,少粘了,最后这个括号你一输进去,它就报错任务就挂掉了。对吧,你又得重新启动,所以避免这种情况的发生,我们在代码里边也把这个加一下。把这加一下啊,但是生产环境当中你要注意一下,如果前面我们已经在加了那个ETL拦截器了,那这个地方呢,就可以不要了,能明白吧。啊,就可以不要了啊,这是第一个,我们就是校验一下,把这个非监测数据给它过滤掉,OK吧,然后呢,呃,如果说他出现了这种脏数据,我们给他写到测输出流呗,对吧,保存啊可以做一个打印对吧?好,那这是第一步,第二个呢,我们做一个新老。
05:06
访客状态标记的修复对吧,那这个呢,在有的买点当中。可能会出现这种情况对吧?啊,那这个讲的什么事呢,来看啊。呃,一表示新访客应该是零啊,零表示老访客应该只有零一这两种啊好,那我们来看一下在这个数据,这是我从那个日志里边粘出来的一点啊,那你们也有对吧,你从那个点log里边去粘出来在这啊我跟大家说一下。Model,然后呢叫log对吧,在log斯里边,你随便打开一个文件,然后呢,搞一点日志出来,对吧,尽量多多弄一些,因为多弄一些呢,你看到的种类就比较全,你不要搞一条一条的话,未来可能只有启动,没有曝光,没有这些东西,那不太合适对吧?好,那我们呢,我这边呢放的会比较多。啊,就是有很多条这样的话,里边各样种类的数据都有嘛,对吧,方便我们看啊,那刚才我们说的第二个操作干什么事儿呢,这里边儿呢,它有一个这样的一个东西。
06:13
叫is new。对吧,哎,表示它是否是。新用户。啊,表示它是否是新用户对吧?好,那我们来看啊,呃,一六为零表示不是对吧?呃,然后我们看一下一六为一的啊,咱们找一个啊。点上这个都是零零。那要不行,我自己手动改一下啊。啊,这你看啊,这边是不是有一为一的呀,对吧,这个表示呢,是新用户。啊,当然这个用户呢,是指的mid级别的。M mid级别的访客对吧?好,那如果零的话就不是这个。新用户啊好,那。
07:00
接下来。我们要做这个新老用户校验,为什么呢?因为我们想啊。我们数据呢,怎么来的。想想我们数据流。Web。APP。对吧,然后呢,发送请求到N。然后呢,负载均衡。到我们的。日志服务器。对吧,到我们日志服务器,然后呢落盘啊,它呢落到log里边用去采集过来。那也就是说我们这个数据啊在这。就已经生成了。我们整行数据是不是在前面web或者APP就已经生成了?好,那也就是说刚才我们is new这个标记。是不是前台生成的?对吧,那这个东西呢,它有可能不准确。
08:00
啊,它不准确对吧,那比如说。我软件卸载了。啊,就是以前我一直在用,但是呢,中间我把它卸载了。然后呢,我选择的是所有的数据都不保留。对吧,过了几天。我呢还是用这个设备,我重装了这个软件,我又访问了。好,那你告诉我,我本来。对吧,Mid比如说MID11我已经有了,对吧,访问过我中间有段时间呢,卸载了,我又重装。那你告诉我,重装以后访问的时候,至少第一条这个is new。这个IS6。他。是零还是一?是零还是一?大家告诉我。我卸载重装以后。
09:09
就是我们想要的是不是零啊,因为很明显你不是新用户嘛,你不是一个新的设备ID对吧,但是问题在于什么呢?问题在于我们这个E6啊,他在前台就产生了,那你告诉我,我把它卸载重装,它产生的是零还是一。他前台在产生这条数据的时候,它是零还是一啊,他得校验诶这个mid。有没有过对吧,他从前台就生成了。那有很多软件呢,就直接生成的是什么生成的是。一。啊,他有可能呢,我们在买点获得的这个数据,他就一,因为他只在前台直接做这个校验。
10:01
对吧,啊,有的公司当中买点就是这样干的。啊,那如果说有的公司呢,在这个时候就访问一下后台,对吧?诶这个设备ID存不存在。如果存在了改为零不存在,那就是一,那这个我们不要去不要去处理对吧,那有时候买点呢,他在你本地,他就是在本地校验,他只做本地校验,他不远程连接到你的后台,对吧,我就本地校验,发现这个mid呢,没有保存任何历史数据,那我就直接给他一啊,那这个地方我们所说的叫新老用户校验。讲的什么事呢?就是刚才那种情况,我们要对这种数据做一个修复,比如说很早以前你这个mid已经存在了。对吧,哎,然后你再来。再来等于一的,那我要把这个一改为零。因为理论上说你就应该是零对吧,我要改为零。对吧,这个就是我们说的新老访客的一个状态修复啊,讲到这个事儿,就is new标记做一个修复,OK吧?好,那我问大家这一块的内容,我们应该用弗link什么知识点来解决。
11:13
我们应该用。弗的什么知识点来解决当前这个这一小点的内容,对吧,这个需求,这个小需求。大家想一想,就这个东西,我。有的一来了。他不一定是真的一对吧,我可能要改为零,但有的一呢就是一,那我要看他之前这个mid有没有数据来过。哎,强总说了叫状态编程没毛病啊,咱们呢,要用到状态编程,把历史数据呢给它保存下来。
12:07
对吧,那我当我数据来了,如果我等于一的话,我做一个判断。我看你状态是否为空,我就简单一点说啊,对吧,当然具体的细节我们到写代码的时候再去讨论啊,啊,那就简单一点说,那你状态,如果你这条数据等于一对吧,你状态等于空。说明你确实是一以前没有数据对吧?好,那还有另外一种情况,你一这个数据来了,那你状态不等于空。那我就把一改为零。对吧,那大在想为什么你都是说一呢?那我问大家,如果我这个标记本来就是零了。我还需不需要对数据进行修改?就是我这个is new这个数据本身它就是一个零。我还要不要改这个数据呢?
13:01
我要不要改数据啊。那肯定是不需要的,对吧,那那很简单,因为你在前台就能校验出来他。是一个老用户了。那就不用管了,那肯定是一个老用户吧,对吧,就不用管,所以刚才我说的都是什么,诶都是你IS6等于一,我需要需要怎么做对吧?哎,再去取状态做什么事啊,这是大体上的思路,当然等会儿写的时候还有一些细节啊,可能有一些不同,或者说我们要补充一些内容啊,等会儿再聊对吧?啊大体上呢,就是用状态编程。啊。好,第三步呢,就是分流,那我们用测输出流的。一个内容对吧,那这里面呢,就是我们说的用process得用process了。对吧,我们需要用到process。OK吧啊呃,因为我们要测殊流嘛,你如果说你最普通的对吧,你用普通map function啊,Fla function啊,如果你用到状态编程,或者说要访问第三方数据库,那你得用reach负函数,因为它呢有这个。
14:15
生命周期方法open close啊呃,同时呢,有运行时上下文,可以做状态编程。对吧,好,那么你如果再想用什么呢。定时器。或者说用。测输出流,你就只能用process了,对吧?它比我们负函数多的是这两个功能,OK吧,好,那最后一步呢,是分流啊,那这是我们整体的要做的事情,分为这三步,对吧?但是呢,我们只是粗略的说了一下它里边将会用到什么知识点,但具体细节我们还没聊,对吧?我们等会儿呢,思路里边会给大家说详细的这个过程我们应该怎么去写,最后呢,就是cody。啊,这是需求分析啊。
我来说两句