00:00
好了,同学们,刚才我们把这个思路呢,给它梳理了一下,接下来呢,我们就按照咱们的文字的描述准备把代码呢,咱们实现一下了啊,同学们来,那我们这里呢,首先第一个要读取原始的日志数据,那我就先把数据准备好啊,这个数据呢,在咱们给大家准备的这个资料当中,有一个叫做Spark啊,有这么个数据打开。你把这个拷贝啊叫user visit action,所以拷贝。拷贝以后大家会发现啊,这个数据呢,就是我们之前给大家分析的那个数据的格式啊,其实数据量呢,还是不少的啊,咱们打开打开以后呢,它总共有180570条啊,数据量其实还是不少啊,那我们现在呢,就可以开始去读取它了,那好,那我们就写上叫SC点,嗯,我们叫text file,然后呢,写上啊咱们来咱们叫做dates,然后写上一个咱们叫咱们叫visit啊然后呢,action.text用户访问行为数据日志,那好这里我们写上,那就是我们的action,我们的R呗,哎,就是我们的行为的RDD啊接下来那就简单了,咱们往下来看,他说了统计品类的点击数量。
01:16
哎哟,这个地方我突然想起来了,咱们之前讲过,咱们的数据文件里面全都是点击吗?不是,你如果不全都是点击的话,那你把每个数据都去判断一遍,是不是就好像感觉有点。是吧,浪费了吧,所以呢,在当前情况下,我们是不是应该先把那些不是点击的数据先过滤掉啊,你再去做统计,这样的话,数据量少的话,你的统计是不是就效率就快了,所以呀,我们这里来同学看我们先干嘛呢?咱们写个RDD点,我们叫做field,这个fielder呢,我们就来给大家写上啊,你拿到的就是每个行为,所以放过来,那么你的每个行为呢,是一行字符串,我们点,我们就要split,为什么要用split呢?是因为咱们这个地方他告诉你了,说我们的每行数据啊,它是什么用下划线把数据分隔开的,所以我用下划线,然后呢,我们在这里写上,咱们叫dates,那你把它分解开了以后,那么我们现在需要知道你到底是不是点击这个,我们该如何判断呢?他告诉你了,如果我们点击的品类ID和产品的ID是负一,它就不是点击。
02:29
那么你要的是不是点击啊,那就说明它不能是负一吧,所以啊,咱们来看看咱们品类的ID,它不能是负一啊,所以我们回过头来啊,咱们来看一看咱们的这个要求,往下走,往下走以后,咱们这个地方就叫c category ID这个是七,那么从索引的角度来讲,它应该是我们的六,对不对,所以啊,咱们这里来写上啊,咱们写上叫做我们的date式,然后写上一个六,它不能等于负一,如果它等于负一的话,就意味着你现在它不是点击,但是我们要统计的不就是点击嘛,对不对,所以啊,这个时候咱们来啊,咱们协商,嗯。
03:12
现在呢,就是Li action他们的RDD了,就你现在就是我们的点击的行为的RDD,这个就已经确定了,那么确定好了以后,那简单了,你开始变成我们的什么这个统计了,所以呢,我们点我们的map,咱们的这个map呢,就是要把我们的action啊,咱们的action放过来,然后呢,把它的这个地方拿过来拷贝,拷贝过来以后,为了统计方便,我需要把你的品类的ID给它拿过来,然后写个逗号一,这样的话呢,我们的那个点击品类的ID就有了,它的数量就是一,那么当我们分解完成之后,那我们只需要点干嘛呀,叫reduce by key这个BYT的话,下划线加下划线,诶这样的话,是不是就可以把咱们的这个数据统计出来了呢?同学们这个思路能不能明白?
04:07
就是我们单独来统计咱们这个点击的品类的一个reduce,就是我们的。那你这样的话呢,我们来啊,咱们点一下VAR回车,你现在得到的不就是那个品类的ID和它那个数量吗?所以我们写上啊,咱们叫做Li,咱们的这个count的RDD,诶咱们这么写啊,把这个去掉,现在记住到了这一步,我们已经统计出来了,好,那么我们继续啊,咱们来往下,那你上面这个能统计,那我下面能不能统计,当然可以了,对不对?所以把这个咱们拷贝,拷贝以后咱们往下来放到这里,放到这里以后,那这个时候记住了,我们分解之后应该就不是六了,为什么呢?我们要看下一个了,所以来咱们找到课件,课件当中我们要找到的是下单,叫order order有一个叫cat ids叫品类的ID加个S表示的意思,所以这个时候是个九,那么从索引的角度来讲,应该是八,那么OK,我们这就写个八,但是你的这个到底怎么算是下单呢?所以啊,我们回过头来看他怎么说明呢,他。
05:14
说了,如果你当前的这个数据啊,它采用那来修饰,它就不是下单,那就是说如果你是下单的话,它一定对none对吗?所以说这个地方它不能等于none。哎,就是这样,所以啊,这个呢,我们就称之为叫做order的action RD,诶,咱们就这么写了啊好,那你这么写了以后,那就简单了呀,所以我们接下来准备把它分解成我们的ID,然后去进行聚合就可以了,但是大家有没有发现有个问题,什么问题呢?他又说了。咱们的下单的品类的ID啊,它是多个,那么你把多个你要拆分成一个一个的对不对,所以啊,咱们这个把一个我们用逗号连接的多个ID要拆分成一个一个的ID,那这个把一个整体拆成个体的操作,我们是不是应该扁平化操作呀。
06:12
为什么是扁平化呢?是因为咱们现在的那个order的那个ID啊,同学们想想它是不是一逗号二逗号三这样的,但是你要的是123嘛,不是吧,你想要的是不是就独立的呀,你想要的是123对不对,是三个独立的,而不是一个整体吧。不是一个整体啊,记住啊,它们是一个整体,我们要的是分开的,所以它应该是一个扁平化的操作,所以呢,我们点应该写成一个叫flight,哎,咱们叫flight map,那么这个flat map你拿到的就是我们的action啊,把拿到拿到以后你就把这个拿过来拷贝,嗯。拷贝过来以后记住了,我现在拿到的就是我们category ID,我叫cids,它应该是dates,写上一个八,哎,就这么写,那么写完八以后我们干嘛呢?需要来点叫做split,给它用一个逗号隔开,因为它说了多个ID之间是用逗号分隔开的,那如果用逗号分隔开的情况下,你拿到的不就是我们的,哎,这个我觉得不应该这么写啊,咱们应该这么写,叫做cids,应该等于它,嗯。
07:25
好了,那这个时候拿到就是多个那个品类的ID了,那么大家想一想,那我现在想要干嘛,我现在是不是为了统计方面要变成这个样子呀,所以说那就简单了呀,来拷贝,拷贝以后点我们叫做map。然后呢,ID我们写上括号,我们叫ID逗号一。你这么写,大家想想是不是最终就变成什么样子了?最终是变成了我们的,诶这个样子吧,那你说好不好统计,当然好统计了呀,所以点我们写上啊,咱们叫reduce by key,下划线加下划线相同的ID,它的数量就会累加在一起,这个时候它就应该来写上叫order。
08:14
哎,我们的这个,嗯,我为了跟上面名字统一吧,咱们叫order count r DD吧,咱们叫order count r DD,哎,就是它。好了,同学们,这个能不能明白,这个稍微的有点复杂啊,就是我这里为什么会采用flat map,就是因为我要把一个完整的一个字符串拆成一个一个的那个ID,它就是一个把整体变成个体的这个操作我们就称之为叫扁平化操作啊好了,那这个如果大家能够明白的话,那其实我们说了,大家看我们的支付行为和下单行为是完全类似的吧,那你是不是就完全可以把这个代码咱们拷贝,拷贝以后给他拿到下面来呢?嗯,你拿到下面来以后,那首先第一个这个肯定不对了吧,咱们往下看,那么我们这个地方的支付,他就说了,这个支付呢,应该在这叫pay啊,咱们叫payment嘛支付,那么这个叫pay,它叫category ids,这个叫11,从索引的角度来讲,应该是多少啊,应该是我们的十对吧,所以写个十,这个不能为纳,那么这个改个名字我们叫做配,那咱们叫做配,然后呢,拷贝拷。
09:24
后把这个变一变,变完了以后,那这个时候呢,我们的每一个它应该是我们的这个对不对,应该是十,然后呢,Cids给它用逗号分解,分解之后变成它,最后应该叫做pay account,咱们叫pay account,你这么写啊,我们的数据就出来了,我们是分开给他独立的统计,点击是点击,下单是下单,支付是支付,这样的话就OK了啊。
我来说两句