00:00
OK啊,那接下来啊,又是搬砖的时候啊。呃,这个思路已经分析明白了,下面就是什么开始搞呗,来去重,首先自我审查,呃,自我审查的一个原则是什么呀,同学们。原则就是什么将。将什么呀?将这个页面访问数据中。包含就是页面访问数据中上页ID就是这个配置ID不为空的数据啊。过滤掉。能明白吧,啊把这个上页ID中啊,就页面访问数据中你的last配置ID中不为空的数据。给他干掉。能听懂吧,同学们啊,给它干掉啊好行吧,那我们就来写一写啊,那这个一看就是一个什么数据的一个什么过滤吧,那如果你要过滤的话,来我问大家啊,我现在应该用哪个方法。
01:07
啊。好吧,我这个地方我应该调哪个方法。说一下啊,在这个聊天窗口里面发一下我看看啊。呃。声明说,Future。啊,玉龙也说。嗯。菲斯啊,可以啊。都是filter对不对,行啊没问题,你过滤嘛,那过滤那我们首先想到的不就是一个filter吗。对吧,那肯定就是这个fair了啊呃,当然了,其实呃,我们也可以什么通过一些什么别的算子来去实现,对吧,这个我们后面说吧,后面我们呃应该会涉及到这个场景啊,呃,我涉及不到也无所谓啊,反正你要知道过滤我们一般都是这个filter啊,过滤呢,一般都是filter啊行,那就什么直接用吧,就这个filter,这个filter的时候呢,它会帮我们传过来什么呀。
02:13
传过来一个page置log对不对,那我拿到你的这个配置log,然后最后呢,返回一个布,OK,那我就这样吧,你给我的是一个page置lo,好,那我返回什么呀?那我就返回page log page log,诶page log的什么呀,叫last page置ID等于等于空。能不看明白?我是要把不为空的数据给它过滤掉,那就说白了,为空的数据我是要的是不是?而我们的filter,你的结果为true的时候,我就把数据保留下来了,你的结果不为处的时候,我的数据就不要了,对不对,同学们。是这个意思吧,诶,我的数据就不要了啊,OK,所以说呢,我们这么写就OK了,好最后呢,把它这个介绍回来,这就非常简单哈,我们叫做呃,Filter,嗯,Stream吧,好,这我们这个过滤以后的OK,呃,那为了能够看到这个效果啊,我们把这个呢做一个打印啊,这是我们这个fair stream,点这个print。
03:22
呃。我想想啊,这个怎么打比较好呢?嗯。我想把这个条数给他打出来啊,条数打出来的话,嗯。做一个count吧。呃,Count是这个对吧,呃。怎么把条数打出来呀,Transform transform然后呢,Transform里面,然后我们这个再把这个RDD。RDD.count count。
04:02
这是那个条数对不对。呃,这是一个转换啊,这个转换的话,呃,我想想啊,嗯嗯,就现在想干嘛,想把这个就是过滤前过滤后的数据呢,做一个打印,打印以后的话,我们就能看到一个什么直观的效果啊呃,我看这样写行不行啊,这样写应该是可以的啊,我做一个transform,然后呢。把这个RDD的这个条数给他看了出来,看了出来以后呢,嗯,我就什么直接做打印吧,对吧,这里面做打印啊,这个是print啊,叫这个自我审查后。对吧,最后审查后,然后呢,我加上这个RDD.count。好,这样就可以了。是吧,然后呢,呃,那你这么做完以后的话,嗯,Transform别transform了吧,直接什么RD。
05:01
对吧,要不我还得给你返回,我我就不给你返回了,对吧,这是我这个自我审查后。然后呢吧,同学们自我审查后,然后呢,我这个RD这个条数啊,那我这个审查前的话,审查前就是我们的这个配置log stream对不对,但如果说你在前面做一个打印的话,那我后面就没法处理了,所以说呢,你前面又想打印,那你后面还想处理,你可以这么去做啊,就是把你的留做一个catch。对吧,这个大家应该也讲过啊,你做一个catch,然后我就可什么多次去使用了啊,行,那我就打印一下吧,这也是一个道理啊,那我做一个什么叫这个for r DD。呃。For r DD行,然后呢,这个我们就也是一样的啊,RDD,然后呢,我们去做一个打印啊,这是自我。省查前对吧,我们加上这个r DD account。
06:00
理解吧,嗯,这是自我审查前,然后呢,接下来就是这个自我审查后。好吧,最后审查后啊,行,那来吧,我们把这个跑一下啊跑一下,因为我们都有这个行动算子了啊,所以说你就不用再去做那个print了啊,我们跑一下看看能不能看到这个效果。呃,正常我们是不需要写这个代码的啊,我现在只是为了看到那个效果啊,所以才把这个代码给它加上啊。好,这个是自我审查前,自我审查后,他是这个没有结果的啊,对吧,目前是没有结果的啊,然后呃,这样吧,我自我审查后呢,我再去打一个啊。打个分割线啊,我们分割开一点啊。然后再来去看这个小A,呃,不对不对不对不对不对,这个是。呃,哪里写错了,For r DD多行代码是吧?多行代码得加大括号了啊。
07:06
好,这样来去写啊,来重新来一下。这个比较麻烦啊,但是我们为了看效果,那我就写一下吧啊。好起一下啊。呃,上游是上游是没问题的啊,你就不用去管它啊,主要是这个下游啊,把它重新起一下。好了,呃,现在我们是可以打印的啊,然后接下来我就跑数据啊,现在是没有数据的情况下啊,下面我们来跑数据,呃,那我就什么再去跑一步数据吧。啊,再跑一步数据啊,这个数据一跑的话呢,我们来到这里面应该就能看到效果了啊,同学们就能看到效果了,你看了啊,呃,我的一个批次打一次啊,这是一个批次打一次,你看啊,我的第一个批次有这么多数据,但实际上我过滤以后呢,就只剩20个了。对吧,你看第二个批次这么多数据过滤以后呢,只剩这么多了。
08:00
这个效果还是很直观的吧,你看啊,又一个批次有这么多数据,但是呢,自我审查以后只剩这么多了。能看出来吧。啊,这个效果呢,还是比较直观的,比较明显的啊,就是我们是能够,呃,应该是叫什么叫大幅度啊,降低你这个后续处理的一个数据量的。就是如果说你能够在前面把这个数据量就给它降低了,就一定要降低,这样的话,我后面处理起来,我的压力就没有那么大,越处理越轻松,越处理越轻松。是不是啊,你就想想,如果说呃,我这个不做什么,不做这个自我审查,你看啊,你这个360多个数据,你如果你不做自我审查,那你要什么跟你的将来要去怎么比对367次,但是我做了自我过滤以后呢,自我审查以后呢,我只有53个数据,我是需要去做比对,做过滤的。对吧,这个次数是大家降低的啊,所以这个是非常值得去做的。好吧,同学们行,这就是我们这个自我审查啊,好了,呃,那这个自我审查这个结束以后,然后下面我们就可以去写,就是为了什么第三方审查啊,这个第三方审查的一个原则就是什么呀,就是我们会什么通过将当日。
09:11
活跃的这个mid啊,这个维护起来能听到吧,维护起来,然后呢,我们呃,这个每条数据啊,就是自我审查后的每条数据需要诶需要什么到这个RA中啊,进行什么比对啊,然后呢,驱虫。对吧,就是像我们刚刚这个说的这个事儿啊,大家来看一下,呃,诶在这啊。好,大家看一下,就是你早上访问的时候呢,那我这个数据呢,我就写进去了,我就把你的m mid呢就写进去了,那你中午在访问的时候呢,诶,我拿到了这个数据,我一对比说诶已经记录过我了,好吧,那我这个数据不要了,那你晚上的时候也是你拿过了一套数据了,你到这里面一比对,发现说诶已经记录过我了,OK,那我就不要了。
10:01
对吧,这就是我的第三方的一个审查啊好,那这个审查的话呢,呃,给大家流程一个作业吧,你们下去或者自己去自己去什么尝试去写一写。对吧,那你要先分析明白什么东西呢,就是你看你又要用到这个ready了,对不对啊,那先分析明白red中怎么去维护这个,如何维护我们的这个,这个就是呃,日活状态啊,这就是一个状态的维护了哈,日活的一个状态啊,比如说。你的类型用什么对吧,然后呢,你的key用什么,然后你的这个value用什么,然后你这个写入的API用什么对吧,然后你这个读取的API用什么。好,这个过期不过期。能听懂吧啊,你把这个事情的这个自己去琢磨琢磨,然后呢,自己尝试着去写一写,好吧,当成一个作业啊,大家这个课下的尝试着完成一下啊行,那我这个就先呃说到这儿啊呃,当然啊,如果说你要接着我这个代码去写的话,呃,因为我是做过打印的,那你最好把这个filter也做一个catch。
11:14
你因为如果你不开的话,那我这个行动完事以后呢,我的数据就没了,那你没了你后面还处理啥呀。对不对,就不能处理了啊,说你做一个catch啊呃,这个只是我们教学的时候给给大家去看效果用的啊,你这个生产环境中,你没必要去这么去做啊。对吧,你明确的知道这个问题是这个是能够做去重操作的就行了,然后呢,后续你就什么该处理啥处理啥,你就没必要去打印哈,这只是为了给大家去看效果,我就打印了一下,所以说要你们加这个代码啊,好吧,那我停一下啊。
我来说两句