00:00
好了,同学们,我们接下来呢,来计算我们的分子啊,刚才呢,我们的分母呢,已经计算完了,接下来我们来计算咱们的分子,那分值我们怎么算呀,你会发现我们又要用到咱们的这个IDD了啊,所以呢,这个RDD呢,它等同于啊,咱们重复使用了,所以点啊我们的cash,嗯,好,然后接下来我们拿这个RDD呢,我们放过来,咱们点一下,点完了以后我们干什么呀?首先按照咱们之前分析的,你要计算分子的话,那你这里不是应该先根据我们的session来进行分组吗?所以说我们点咱们叫group啊,咱们的BY这个我们写上下划线,点我们应该叫做什么呢?应该叫page I啊,说错了啊,应该是S。他们应该是sessionon ID,相同的sessionon放在一个组当中对不对?所以我们点一下叫VAR回车,回车以后这个就是同一个我们的session的ID,所以我们写上叫RD啊好了,那你这么写完了肯定不对嘛,所以啊,咱们这里首先加点文字性的描述啊啊,咱们写上就是我们要根据我们的session啊进行我们的分组,那么分组之后来写上分组后。
01:21
分组后啊,根据我们的访问时间进行我们的排序,那这个排序你要知道,按照时间从小到大应该默认就是个升序,这就对了,所以啊,咱们来咱们叫做son,我们的RDD点,因为我们这个其实是可以保持不变的,我们只要对它排个序就可以了,所以呢,我们写上点,这个点呢,我们写上啊,咱们叫做map values。Ma values的话,你拿到的不就是一个可迭代的一个集合吗?所以放过来,但是可迭代的集合它是不能够什么进行我们的啊排序的啊,所以呢,来我们点叫to list,那么你的这个to list我们点一下,咱们叫干嘛呢?时候我们用so by是可以写上下划线点,点了以后咱们这边有个叫action time叫做动作的时间,诶我们就用它就行了,你用它以后默认不就是声序嘛,对不对,所以说你这么写其实就够了啊,然后呢,点一下咱们叫VAR回车,回车以后,那么现在它就是shortt,咱们的list排完序的,那么大家想想,当你排完序以后,那这个时候好像又用不到那么多数据了,对不对,我们只需要把页面留下来是不是就够了,所以啊,咱们在这个地方还有点儿什么呢?转换操作叫map,然后呢,写上一个括号,然后下划线点咱们叫page ID。
02:50
啊,咱们叫page下划线,咱们叫ID,点一下VR回车,记住啊,这个里面的long,其实它就是我们现在连续的flow啊,咱们的ids是一个连续的我们ID的什么一个集合。
03:07
但是大家想想,你的这个集合是不是这个样子的,对不对,记住啊,我现在还在一个组当中呢,那么你的这个应该怎么办,是不是应该变成咱们这个样子。变成这个样子吧,哎,就是他说的简单点是不是就是说我们的第一个和第二个要连在一块儿,第二个和第三个要连在一块,第三个和第四个要连在一块啊,这个咱们能做做到吗?就是想将相邻的两个元素给它连在一起,这个能不能做到啊,那么也就意味着我们想要的效果可能是这个样子的,同学们看,我现在写上一个1234,我最终想要的效果是什么呢?是一杠二啊,然后呢,二杠三,然后三杠四,对不对,这个是我想要的,那么我们能不能够得到呢?能不能这个是可以的,那怎么做呢?比方说大家想想,我如果能想办法把一和2A当成个整体,那么它能不能变成它呀,你再把二和三当成个整体变成它,你再把三和四当成个整体变成它,是不是就可以了?所以大家看,如果我们中间可以想办法把一和二当成个整体,然后呢,再来把那个二和三,哎当成一个整体啊来我们写的二杠二逗号三,然后再来一个,哎,写成一个三逗号四,你能把上面的数据我分解成这个样子的话,那你你想把它变成这个容不容易?
04:35
应该还好吧,那这个怎么能够做到,就是我们现在要按照这种思路来讲的话,怎么能做到,你要记住咱们在学SC当中的时候,有一个叫做sliding,咱们叫做滑窗效果,大家还记得吗?哎,咱们叫做滑窗。啊,它表述的是把集合的一部分数据当成一个整体,那这个整体这个范围我们称之为叫窗口,而这个窗口呢,它会不断的滑动,对不对?大家看一下,我现在把一和二当成个整体,然后呢,再把二和三是不是等于滑动了,再把三和四再往下滑,所以啊,它这种滑动的感觉,我们拿滑窗应该是可以的。
05:16
那除了华创以外,还有没有别的呢?其实还有别的,大家看你的目的不就是将一和二关联在一块儿吗?那如果咱们按照这种思路的话,大家看我们的数据,比方说是这个样子,那如果你能想办法,你得到这样的数据,大家看我就234。大家想一想,那么我们相同位置的数据是不是也能连在一块儿,而且是可以自动连在一块儿的吧?咱们有个什么东西还记得吗?GALA集合当中是不是有一个叫jeep,叫拉链啊,这个拉链是不是就可以实现我们刚才说的功能呢?所以啊,其实有很多种方式可以完成咱们这个操作,就是把咱们的连续的页面跳转呢,变成这个样子,这个咱们一定是能够做到的,那么既然咱们能够做到的情况下,那咱们怎么简单就怎么来了,我就用拉链就可以了啊,为什么呢?因为我们这个是已经有的,我只要想办法和它做拉链不就完了吗?那它是啥呀?
06:18
他什么东西。你们能不能想到它其实就是我这个集合的纬度的数据,对不对,那所以我们可不可以这样呢?我们叫做flow ids点我们叫做拉链,诶我们叫jeep,然后呢,我们叫ID点什么呢?我们叫做Q。这个。记住了,同学们,这个就是它的尾部信息,这个就是它,它们合在一块,我们点,点完以后VAR回车,这个时候不就是页面的连续的操作吗?所以啊,我们就叫page flow ID啊,S这么写就可以了啊,好了,那我这么写完了以后,大家想想我们返回的结果其实就应该是我们想要的吧。
07:07
所以来返回,返回以后,那么这里呢,我们写个点啊,来写上,嗯好了,放到这边,放到这边以后记住啊,这就是我们的一个RDD,是我们的map的一个RDD啊RDD,那这个RDD你会发现其实这个时候我们还关心这个筛吗?不关心了,而且我们应该把这个给它拆开吧,为什么?因为我们现在要的其实是他。对不对,同学们,哎,所以并且我想想,咱们这个地方好像我是不是还可以把它转换一下呢?嗯,我想想,嗯,这个在这转也行,在外面转也行,什么意思啊,我们是不是可以想办法干嘛呢,把它变成首页我们的详情一呀,那这样的话也当成个word行不行?所以啊,我们这再变一变啊,咱们来写上咱们叫做点,我们叫做map,然后这个map当中啊,我们会有一个什么呢?会有一个T,咱们叫做tale,这个tale呢,干嘛呢,写上括号,我们叫T。
08:11
就是把那个ta变成它,所以呢,我们这还有点不太对了,来把这个去掉,嗯。去掉以后我们再重新来啊,咱们再重新来,再把写上一个点叫VR回车。回车以后大家会发现,其实这个就是连续的页面跳转,这是它点击的那个E那个次数对不对,所以啊,这个写上咱们叫MVRDD好了,那么现在就好办了,为什么呢?因为首先第一个我们的session不要,第二个我们要把它给它分解出来,所以大家看拷贝,拷贝以后把这个去掉,我们写上叫做点,我们叫map map,然后呢,写上一个下划线,点下划线二我们是不要session的。那么再来点我们干嘛呢?叫Fla map下咱们叫list,然后变成list,我们为什么要这么变呢?是因为我们其实不要这个整体,咱们要的里面的每一个个体对不对?所以在这种情况下,我们就用Fla map给它拆开,所以点一下,点了以后VR回车,这个时候大家有没有发现,其实现在呢,这个就是我们真正想要的那个东西了,比方说我们的括号一,逗号二,一号页面跳到二号页面,然后呢,是个一,对不对,诶,我们要的就是这个效果,那这个效果有了以后,问问同学们统计一到二的总共的点击次数可不可以没问题吧,所以这个写上flight r,好,那我现在呢就可以了,写上点叫reduce by key,那么下划线加上下划线,下划线加上下划线之后,那这个时候我们得到的就是我们的什么分子的数据了,同学们啊,好。
09:54
OK,那么我们写上一个叫date RD就行了,嗯,你这么写完以后,我们这个值就叫sum了,所以我们现在呢,把这个地方呢,大家看啊,我们现在拷贝,嗯,拷贝放过来,放过来以后我想想咱们这个计算分子的工作是不是已经计算完了,分母咱们是不是也有了,现在你该怎么办,是不是该计算它的一个我们的比率了,所以来写上todo,嗯,计算。
10:24
计算什么,我们的一个单跳,咱们的转换率,那么单跳转换率,那首先那不就是分值啊,咱们写上咱们叫做诶咱们叫分子,它除以我们的分母嘛,对不对?好,那么你的分子除以分母的话,那分子不都在这里面吗?所以说来咱们干嘛呢?咱们去点一下叫做点我们叫做collect采集一下。你这个采集之后,咱们的这个分子就有了,那好,我现在给它来一个啊,写上一个case,那这个case当中我们就写上括号,哎,这个叫配ID1啊,这个叫配ID2啊,就是它,然后这个呢,我们叫做sum,哎,好,然后呢,我们写个箭头,写个花括号,记住啊,我们这个就是分子的值。
11:16
那么你现在分子咱们有了分母在哪呢?分母不就在我们上面的这个地方嘛,对不对,在我们的这个地方叫做分母,那你现在是不是应该从分母当中找到对应的那个我们的数据啊,分母中有那么多的数据,你要找哪一个呀?你是不是应该找前面那个首页的那个分母啊,所以说就意味着咱们这地方的配置ID应该根据它来找到对应的分母数据。可是呀。你这是一个R瑞呀,如果你是个R瑞的话,你就找起来可不方便,那怎么办?所以啊,有一个方法叫点to我们的map,你如你如果to map的话,那这可就是一个map了,同学们啊,那如果这是一个map的话,那这个地方呢,应该就是一个这个样子啊,所以大家会发现你需要一个map可能会更方便一点,所以咱们这就不叫阿瑞,咱们这里呢叫。
12:17
Map好了,那你把map拿过来,同学们看,我现在呢,点点了以后叫get,我们的这个叫all else,我们叫page ID,我们的一,哎就是这样啊,但是我得确认一下,我得确认一下它的这个类型有没有什么问题啊,嗯。咱们这个地方我点一下点完哦,浪没问题,它是个浪类型,它是个浪,这里是个浪,那没问题了,好,然后给它一个什么呢?我们的零啊。好了,写完之后,那我现在就等同于点VAR回车,你是不是等于把我们的那个分母就取到了,对不对,哎,就是这样好,那这个呢,我们叫做什么呢?嗯,就叫做浪吧,就叫浪吧,啊行了,那你这个有了some也有了,那我们就来写上了,咱们写上叫做print,嗯,Print。
13:05
呃,我看看啊,这个叫collect,你这么写诶,那么采集之后这么写是不是不好啊,那我觉得是不是用for可能会更好一些,为什么呢?因为我希望循环嘛,你那个只是采集嘛,所以我这里呢,给它改成我们叫for it挨个便历,那我挨个变历的话,那我这里是不就可以写了,咱们叫做跳转啊,我们叫做什么呢?呃,页面啊,它的单跳转换率单跳啊。单跳哎,我们的转换率为啊为,那你得告诉我页面是哪个单跳对不对,所以我们写上一个我们的它,然后呢,写上一个这样吧,咱们叫做什么呢?页面这个是不是好点呢?叫配置ID1啊,咱们叫做跳转啊。咱们就跳转到页面啊,咱们写上来,嗯。咱们叫做,哎叫们学啥。
14:01
咱们叫page id2,诶好了,它的单跳转换率为,然后再加上括号,为什么要加括号呢?我应该用那个sum啊,然后呢,给它来sum,然后除以我们的这个to,但是由于啊咱们都是整形数据的话,你这个没有小数可能也不行,所以点咱们叫to double。诶变成double,那这样的话不就OK了吗?同学们,嗯,好了,我现在呢,就把咱们这个做完了啊,分子有了,分母有了,然后我循环便利,然后呢,把每个我们的数据拿到做一个计算啊,那我们现在看看结果吧。点击右键执行啊,看看我们的这个跳转呢,有没有什么问题啊。嗯,好了,大家看到这样出错了啊,这样出错了,这样出错的原因呢,他是说了我们需要一个浪,但是我们找到的是一个他啊,我看一看,呃,咱们的这个map啊,我来确认一下这个page ID,我确认一下page ID是一个LA,然后呢,我们这个地方map,这个map是什么啊,这个地方也给他一个浪吧,也给他一个浪啊,然后这个地方呢,我们写上一个EL啊EL,那我们这么写就可以了,重新来,嗯。
15:22
所以看看大家会发现是不是都有了。
我来说两句