00:00
呃,来写这个去重,去重之前呢,我们先按mid mid呢在common里边我们已经知道了,对吧,所以咱们就快速选项啊,点key,然后呢,我们是一个杰森。从Jason当中先获取common。对吧,先获取他们,然后再获取。Mid。啊,然后再获取M麦啊,CTRL加V得到一个什么呢?线控流key的string啊,那我们接下来可以使用状态变程来实现这个驱重啊驱虫对吧?呃,那就是key的STEM点。我们想一下这个地方用哪个算子。那起码是一个负函数对吧。对吧,起码是一个负函数,但是我们要用哪个算子呢?Map map。Filter。
01:00
Process啊,其实我不太希望大家敲process对吧,说明没动脑子啊,就是反正process肯定可以对吧?啊问到哪个扇子process肯定可以,你你要process都不行的话,那没有人能行了。那我们用什么?你想一想,我们要使用状态编程,按照m mid做去重。所谓的去虫,其实就是一个什么过程?所谓的这个去虫。就是什么过程。Go if,过滤对过滤的过程。驱虫就是写呢。咱不是写S呀。对吧啊,咱不是写课,你不是go by呀。If。啊,还有if就if着函数嘛,对吧,对了,Filter实际上本质来说应该是一个过滤吧,对吧,我只保留第一条,其他的全部干掉嘛。
02:05
它本质来说不是过滤嘛,对吧,咱们呢,用什么用。Filter啊,那我们要用rich。对吧,Rich field好。呃,那最后数据要不要呢,我也不知道,现在呢,就false,那我们之前说了,我们有一个状态对吧,状态呢,存这个日期啊好,那咱们这样。Private还是既然存日期,那我用value就够了,单个值的对吧,Spring类型好,嗯,那接下来呢,这个叫last。Visit。State,诶好像跟这些名字有点像对吧?啊,都是上一次访问啊,那在open方法里边做它的一个初始化啊,那这个呢,等于。叫运行时上下文去获取对吧,这里边它要一个value state describe,要一个状态描述器,那我们就在上面有一个啊叫state,然后呢,一个名字叫last。
03:08
对吧。嗯,再给他一个。Three。点class它的类型对吧,加V,那我们就得到了一个state,然后呢,把这个。扔给他啊,那咱们的这个状态呢就好了,接下来呢,我们就按照这个来写。按照这个来写,这里边很明显我们要判断这个状态是否遇到,且拿着状态跟今天的日期相比,对吧?所以呢,我们在这边要获取状态的数据,并获取当前数据里边时间戳,而且还要转化成日期,对吧?所以呢,我们把判断之前要用的数据。先准备好啊,那获取状态数据and当前。数据中的。
04:02
时间。啊,并转换为日期。对吧,啊时间戳啊,这个呢,我们可以写成时间戳。好,那状态数据呢,好获取那last visit。对吧,点。好,这个呢,就last。Date。对吧,啊,上一次的访问日期啊好,那接下来呢,当前的那就是value里边点get long对吧,呃,那咱们呢,有这个TSV。接下来我们要做一个转换,那就date for you to date对吧,把这个TS连进去。加倍得到一个叫current date。当前的日期,好,那按照我们所写,如果。状态等于呢?或者。你不等于那也行,对吧,不等于那呢,但是不是今天。
05:02
啊,那我们怎么写这边if。Last date,它等等于那对吧,这是一种或者。什么呢,你不等于那不等于那呢,但是你俩不等对吧拉t.equals跟谁呀,跟car dt诶不等,所以这边呢取了个反。啊,取了个反,那呃,这个数据呢,是咱们要的,咱们要的数据对吧,我们最终呢,要返回什么。处的。反而出的。是吧,但是呢,在这个中间我们还得做一点事情,如果你就是这样返回出那完了,那你这个状态,如果第一次他进来是个那对吧,那你这样返回,那不永远都是那么。对吧,所以呢,在这儿还有更新一下状态吧,把这个状态更新一下啊,不要忘了叫last visit.update把当前的这个数据日期呢,哎,给它更新进去。
06:00
啊,那反之反反的是什么就不等于呢,并且它俩相等,那不就同一天的数据了,对吧,同一天数据就不要那else对吧,我们加一个else啊当然嗯,你这块呢,你不加else是不是也没问题。对吧,啊,但是呢,如果说你从更规范的角度来说,是不是我们可以加一个。Else对吧?哎,两个逻辑分支看的好像更清楚一点啊,省得就直接在外面写了,当然这个else这个可以可以不要对吧,结果是一样的,结果是一样的啊,当然如果你装了一个插件啊,如果你在ideal里边装了插件,叫这个阿里编程规范。啊,我记得里面好像如果说这个else你不写。就不行,他要给你报错啊,ID要给你报错啊,阿里的规范呢,他可能比正常ID要求我们的规范要更严格一些。啊,要更严格一些,OK吧,好,这是咱们的一个过滤就搞定了,按照这个来写,其实还是比较简单的是不是对吧,还蛮简单的一个需求啊,呃,就前面你要把这个分析清楚,其实就好了啊好,那这样的话呢,我们就得到了一个filter。
07:17
嗯,或者叫UVDS也可以对吧。因为这里面呢,就是独立的这个。是活了啊,独立日活了,或者叫非DS都行吧,反正这个名字啊,最后呢,将数据写到这个卡夫卡啊,那咱们呢,我在这边我拿一个这个主题啊。我把主题拿过来啊,嗯,这个是dwd traffic UV这个主题对吧?好,那在这边呢,我们拿着刚才写的这个UV啊。点做一个print啊,在本地上做一个打印,万一卡那边没看到数据呢,对吧,我们看这边啊,点ADD think叫my KA YouTube点卡一个producer直接放。
08:01
Topic啊,当然了,这里边他报错是什么原因啊?我们数据呢是接object啊,最终呢,我们写的那个东西是一个string对吧,所以呢很简单,在这边呢,我们做一个转换点卖。我们呢是一个杰森,然后呢,我们要把这个杰森。转成to Jason stream啊,当然了,他可以用这个方法调用的方式啊,他自己给我们实现一下啊,直接这样写也可以啊,最后我们还有一步啊。第七步启动这对吧,DNA点。把当前的这个类名拿过来,作为我们的当前任务的名称,叫本名称对吧?好,那到这个为止呢,我们就已经搞定了啊。
我来说两句