00:00
那接下来这节课我们还是用一点时间给大家测一测这个效果,看看这个跑起来到底什么样子,或者说他跟别的卡夫卡数据怎么过来,对不对啊,这些东西我们是要去看一看的,那这里边我们怎么测呢?当然了,大家可能知道就是还是。去去把这个卡夫卡跟zoo keepper是不是都要提起来啊,所以我们进入到自己安装的这个,呃,我先到lukeper下面来,呃大家知道,就是我们平成可以拿这个GPS看当前的这个Java进程对不对,我现在啊,现在是只有一个这个ES,其实啊,所以现在都是关掉的状态,那我们是不是可以执行并下面的z k server start是不是可以启动这个keper啊啊对吧,我们先把这个look zookeper提起来啊,现在我们看一眼。
01:00
呃,这个keepper提起来了,对吧?那么大家也可以看status啊,正常的这个stand alone啊,一个单节点,呃,然后我们有了zoo keepper之后,是不是就可以把这个卡夫卡提起来了,对吧?呃,那在这个就是我我们就可以创建这个卡夫卡的,呃,就是这个生产者了,对不对?我们的思路是在卡夫卡里边我们创建一个生产者,然后呃,对应的去发送,就是向这个,呃,Recommend这个topic我们去发送信息对不对?就按照我们要求的评分数据的那个格式,我们要求的评分数据是什么格式来着。是不是这样一个格式啊。U mid mid,一个score,然后一个time stamp,对不对?哎,就是这样的一个格式,所以我们可以按照这种方式把它,诶直接输入进去,到时候我们输入这条数据,如果说这里大家就能看到,诶来了一个把这个stream程序提起来的话,看到来了一条评分,呃,然后我们还数据库里面能写进去的话,这是不是就没有问题啊?哎,所以大家可以看一看这个测试的过程,好,那接下来我们到这个卡夫卡里边,呃,大家可能会想到我,我先去看一眼这个当前我的这个卡夫卡topics对吧?呃,那大家知道这里我的需要定义look keepper,呃,我这里就都是local host的,大家根据自己的那个host name来改啊。呃,Look的话是2181LIST对吧,我们先看一眼,现在应该是没有吧。
02:45
我之前应该是做过清空的操作的,如果要有的话,我们还得先删,对不对。哦,这个这个这么这么慢吗?稍微有点慢啊,好没没东西对吧?好,所以没东西的话我们就直接来做了啊好并卡夫卡,呃,接下来我们是不是应该把卡夫卡server先启动啊,对吧?卡夫卡server start呃,我们一般情况用这个加一个静默启动的方式对不对?然后指定我们的config下边的server practice一般都是这种方式,所以大家呃,该起的工具起起来就可以了,好,我们随时关注一下啊,大家看现在已经提起来了,对吧?卡不卡?好呃,接下来接下来大家会想到我们应该做什么事情呢?是不是就是这边去创建一个生产者,然后启动我们这里的这个streaming程序是不是就可以了?呃,另外大家还得注意,还有我们这里。
03:53
用到什么数据呢?还用到了这个啊mongo当然是起着的,对吧,我们是不是还用到redis里边的最近评分数据啊,啊这个好在我们这里最近评分我这里面是已经写进来了,对吧?这个里面已经有一个UID1这里的东西大家如果要是没有的话怎么办呢?如果没有的话,那肯定还是得写一遍,对不对,那那你这个这个数据怎么样去写呢。
04:19
我们可以直接l push对吧,Push数据进去,如果要是这个K没创建的话,它自动就会创建一个对不对,我们看看除了一之外,一这个数据是我之前已经看过,那这个数据我们是不是还是希望它是真实数据啊,我们的真实数据data loader这里边大家看一眼。Resources对吧,评分。评分这个数据有点多啊啊,大家看一这里边的评分我都已经弄出来了,那比方说我这里边再来一个二的评分吧,二的评分我比方说就选这么几条应该也就够了,对吧?啊,大家会想到这里边是不是就应该UID2啊对吧?然后后边的这个评分我们push的时候按照什么顺序push呢?大家想一下是不是应该是按照时间顺序一个一个push啊。
05:15
啊,好,那所以我们就选取最近的几条吧,大家看这里是不是有,呃,266这里开始的啊,这是一个后面的time step是不是不需要,我们只是要中间的这两项,一个mid,一个评分,对吧?我们把这个五分的都拿出来吧,265,注意我们这里是不是应该是冒号分割,是不是这个要求,如果要是所有的这个大家都要过一遍的话,那我们就后边都做一个这样的处理,266,哎呀,有点多了啊,这个弄起来好像很麻烦的样子。272还有什么273,我们先把它copy过来啊,292296还有300。
06:14
最后还有一个300,我们就把这几项,这是不是就是他最近所有的评分啊,因为我们这个red里边的数据,它也是有时效性的,所以不一定所有的数据都有,对不对,这也是符合我们真实的状状态的,好我们就按照这种方式把它复进去,现在我们再看一下所有的case是不是就多了一个UID2啊啊这样一个list,那如果我们要选它里边的内容的时候,是不是range对吧?UID2如果要取所有的怎么取呢?是不是后面stop就负一啊对吧?大家看这是不是就是我们插入进来所有的数据,而且大家会看到它是按照什么顺序放的,是不是最开始的数据是我们最后插入进去的数据啊,所以我们这里边的这个push对应的这应该还有pop,对不对,Push pop这是不是有点像我们的对战操作。
07:15
对吧,就是,呃,我们压战和谈战的操作一样,最先进去的是不是会塞到最底下呀?呃,这就反过来可以可以说明我们在实现的代码里边,大家还记得吗?我们找的时候是不是直接就从零开始找到这个前number个前K个就返回了,那大家当时肯定有同学其实当时提出疑问的啊,我觉得这个思考非常好,大家就想,诶,你你这里边存的到底是什么顺序呢?你就把钱K歌直接拿出来了,那现在大家就知道了,这里边是不是就是按照顺序,它是逆逆序存储的呀,前K个是不是就是最近压进去的KG。啊,所以这是符合我们要求的对不对,好,那现在这个red里边数据也有了,我们这里就可以创建这个呃生产者了,对吧?好,那呃,这里大家注意一下,我们希望等一下运行这个程序的时候,诶我们是不是已经改过了。
08:17
这个log,哦,这个one我们已经改过了,对吧,我们不想让他那个信息刷的太多,要不然我们看不清楚这个到底是执行到什么程度,有没有把那个评分数据拿过来,呃,那接下来我们就创建一个生产者,创建生产者怎么创建,用的是卡夫卡conso,对conso下面的producer对不对。呃,然后这个是不是要指定broke list呀,Broke list应该是local host9092对吧?呃,我们这里的这个卡卡,然后指定一个topic,我们的topic叫什么?Streaming那边是指定好的,是不是就叫recommend啊,对不对,这个大家要跟这里写的一致啊,我们这里边操作的这个是不是都叫recommend啊,这里也得也得一样,要不然这里边我们是不是按照这个topic去创建的consumer,那你如果要是这边的producer跟他不一样,那拿不到的数据肯定就不好使嘛,所以呃,这里给大家做一个这个操作,创建这样的一个生产者,好对应的我们这里是不是就可以把这个启动啊,让一下对吧。
09:37
Stream程序启动,然后大家看到这里边我们已经把这个producer提起来了,那提起来的话,我们里边是不是这里给一条数据,我们之后这个,呃,Streaming提起来之后,他就应该能够收到这条数据,然后去做对应的处理啊,他就应该输出这个什么RA data coming对不对啊,大家发现这里边拿到这个以以竖线分割之后,它直接就把它切成四块,然后就做我们这个处理,最后是不是保存到mango里边去,应该会多一个叫做。
10:12
叫做stream ras这样的一个表啊,啊,那我们还是先看一眼这个mango里面没这个东西吧,之前我们应该看过的,应该没有,对吧?Tables,哦,这里面已经有的是average,呃,Runs,这是我们的统计推荐,对不对?Movie,这是基本表,Movie raps,这是我们的相似度矩阵,对吧?然后这两个rate more recently,这又是这个统计推荐,RA tag,这是基本数据,User rap,这是呃,离线的基于盈运模型的协同过滤推荐,对吧?啊,这些都是我们之前实现过的内容,没有stream ras,现在我们如果要是成功的话,应该能够找到这样一个表,对吧?好,我们看一眼。哎哟,这边这么慢啊。
11:01
这里我们还是先想一想我们要什么样的数据吧,大大家会想到这里我准备的数据是不是就应该是出现分割的几个值对不对,一开始是不是应该是什么,大家诶,这里直接挂了啊。Maybe running,我们是哪里起这东西吗?我看一眼啊。好,我先把这个这里这个APP name要改过来,Streaming recommend,好,我们再跑一遍,好,这就先好,那么我们现在把这条数据已经生产出来,看一下这里边的streaming提起来之后是不是能够拿到,诶,大家果然看到是不是有一条这个RA data coming啊,这是我们故意在这个流处理流计算的过程当中插了这么一句。
12:07
他如果已经执行到这儿来的话,如果一切正常,是不是后面他应该就按照这个顺序拿到最近K4评分,得到备选电影,最后是不是算出这个列表应该存到mango里啊,那最终我们的终极校验当然还是要到mango里边来看一眼,收tables。诶,这里是不是多了一个stream ras这样的一个推荐,所以在这里大家可以DB.stream ras stream.fun pretty哦,大家看这就是我们当前给用户一的一个实时推荐对不对啊,大家可以看到推荐出来,他看了一部1271给他推出来的是这些电影,然后他的这个得分,哎,各有不同,诶大家看到这里边稍微有一些缺陷,就是我们没有按照这个评分高低做排序,对不对,这个大家可以做吗?呃,也很简单对不对,我们在那个里边再加一个thought by或者thought with就可以了,对吧?啊,所以这里我们其实就是把所有的备选电影都做了一个计算,对吧?啊,那那这里大家如果要加上这个salt的话,可能会更好一点,这就是我们实时推荐这一部分的一个实现,好,那接下来大家就把这一部。
13:27
本代码好好的实现一下,敲一敲。
我来说两句