00:00
哎,大家感兴趣的肯定是这个已经写完了,怎么样去测呢?首先这个,呃,这个stream程序肯定得跑起来,这是肯定的,但是在这跑这个之前,我们是不是还有很多的这个连接,需要连接的东西都得起起来啊,所以我们先看,首先先去起。Keepper跟卡夫卡啊,我们先把这个先提起来。所以我这里边这个大家应该是比较熟悉的吧,我到Linux环境里边去到我的安装目录下look keepper,呃,那大家会知道look kper的启动命令是用这个z k server对吧?呃,Start我们把它提起来,呃,当然我这里边没有指定其他更多的东西,大家用GPS看一下,进程已经提起来了,然后接下来我们是不是要去起这个卡夫卡。呃,卡夫卡这里我可以先去看一眼,就是呃,卡夫卡里边本身这个topic的状态对吧,比方说在病下面有一个卡夫卡topic,我们可以looker。
01:18
呃,我这里默认的这个端口当然就是2181了,然后后边可以list一下看看,现在应该是什么都没有的一个状态吧。啊,这个稍微有点慢啊。看到现在我们这里面还没有任何的topic,这是一个空的状态,所以我们把卡夫卡提起来,卡夫卡的启动大家还还记得这个是用哪个命令吧,卡夫卡server start,对,呃,这里边我可以就是让他在后台启动啊点,然后指定这个对应的文件是server.proper。
02:09
把它吸起来。好,呃,我们先看一眼啊啊,现在多了一个卡卡的进程,说明我们这些东西都已经提起来了,好,然后接下来大家会想到我们还需要什么东西呢?对,还需要red,所以这里边我还需要去取一个red啊,这里我是,呃,直接可以比方说我在Windows环境里边有这个red,把red先提起来。呃,大家这个就是不要局限在哪个环境啊,这个没关系,哪里都一样,那同样我们可以连接到这个red的,呃,客户端命令行里面来看一下现在的状态对不对,这已经提起来之后,大家可能知道K就可以看当前里边所有的这个键啊,那大家看这是我自己做测试已经有了一些键,那我们真正要去做这个读入用户最近的case评分的时候,它是应该保存成什么样子呢?是不是要保存成user ID,然后冒号后面跟上真正的user ID保存成这样的一个list子的呀?哎,所以呢,我们这里边其实是得去做这样的一个处理的啊,那那大家会想到这个数据我们从哪去找呢?
03:28
对,呃,有些同学可能说我直接从这个代码里面去生成,其实我们的数据肯定是在这里边,这是现成的,对吧?这些评分数据是不是都已经在这里面已经有了,那我们可以随便找一个,大家看这个4867这个用户他肯定是给过评分的,对吧?那我们可以找到他给过的所有历史评分,我把它先写到这个red里面去,那这个怎么找呢?是不是就得到mango里面去做一个查询了。
04:03
这这个大家应该知道吧,DB我是不是可以去find一下,那这里是不是就可以指定user id4867啊,诶所以大家看到这里,我查出来这么五条数据,这是不是就是4867这个用户已经给出的评分。我直接把这些评分放到这个red里面去,这其实就是我们当时在业务系统,它应该就是把这些东西都得放进去的,对吧?啊,我们做一个测试嘛,只放一个用户的就可以,那大家可以看一下,就是这里边我们按道理是不是还得有一个排序啊,因为我们之前其实是要求是取出最近的对吧,K4评分,那这里边其实如果要想去排序的话,也简单,是不是可以做一个salt,对,按照时间戳,那这里大家想是升序还是降序。
05:01
嗯,对降序那就是对这上面最上面的就是,呃,大家注意这我刚才这升序了啊呃,如果我们想要按照就是插入顺序来看的话,是不是还是应该按照升序去插,因为在red list里边是不是我们先塞进去的,它相当于是是一个队列,对吧?先塞进去的它是不是应该放在最下面,我们再去查询的时候,它应该是显示在最下面,对后面塞进来的它会放在最上面,所以我们直接按照这个时间顺序把最初的放在最最前面插入就可以了,那大家看这个查查询出来的就是这些啊,那我这里就简单的复制一下吧,呃,这这里大家注意,就是在这个re里边,我们怎么样去写这个数据呢?一个list怎么操,怎么样去操作,还记得吗?是不是l push啊。
06:01
这个是不是就是list的一个操作对吧?呃,对,对于这个KY内存数据库而言,我们也不需要专门去定义这个这个K,我们直接去push的时候没有它自动就创建出来了,那么这里是user ID冒号,刚才是叫什么来着?4867,后边这个value我刚才复制了一下啊,是这样一个product ID对吧?而且我们的要求是不是里边写进去的数据还是后面要冒号加上它的那个分数啊,呃,这是每一次的这个一行数据,这是三,3.0,我们都是一个double类型对吧,3.0,呃,所以大家看,如果我这么l push以下的话,再看case就可以看到有一个叫做user id4867的这样一个K,那如果我要想去查询的话,是不是就应该用user id4。
07:01
867呃,如果查询所有的,可以给一个零到负一的一个,诶这里边。你前面写错了啊,少了一个E是不是。User ID,所以我们就可以看到刚才插入的这条数据了啊,那当然我们还是应该就是把那个多push几条啊user id4867,后面我们看一眼这个还有这个啊,它的评分是哦,也是三分3.0,我们可以一下子把它全插插进去,就放在一行写是不是可以啊,这个是1.0。然后下面一个,后面两个都是五啊5.0。最后还有一个。
08:01
5.0,好,我们把它铺进去,大家现在可以看一眼这个。里边的东西如果直接去L查出来是什么,是不是查出来,其实就是按照我们插入的顺序,是一个倒序的排列啊,先插进去的在最底下,呃,所以这是不是就是这就是按照我们这个时间近离得最近的放在最上面,最近的K4是不是直接取前K个就可以了啊,这跟我们代码里边实现的L0NUMBER是不是一致啊啊这里大家注意后面这一个的话,呃,就是你可以是给number,也可以给number减一,这个大家就按照自己的定义来就可以了啊好,这里边的数据red的数据已经写好了,那接下来。我们可以干什么了啊,我们就可以准备工作做完,就可以在这边启动这里的这个主程序了,我们把这一部分,呃,在启动之前大家还是注意一下,因为本身输出的信息可能会太多,所以最好这是offline啊,找到online的这个log,最好是对,把它这个日志级别调高一点。
09:17
好,然后我们这里就可以去让下跑起来了,好,那大家看现在这里我们STEM程序已经提起来了,那我们的流程想要的是卡夫卡那边要产生这样的数据,所以我们应该在卡夫卡那里创建一个叫做recommend的。一个topic,然后呃,创建一个消生产者,这里边自然就可以去消费它生产出来的数据了,好,那接下来我们看一眼这个卡夫卡。呃,那卡夫卡这里边,我们是不是还应该在并下边怎么样去创建生产者呢?
10:03
这里面没有topic,我们其实可以,呃,不专门指定topic,直接创建生产者就可以,那么创建生产者用的命令卡夫卡console,对,Producer对吧?呃,那然后这里边我们要指定list,应该是local host 9092都是默认的端口啊,后边我们可以去创建一个,呃,就是指定这个topic是recommend,大家要把这个要写对好。这样的话,我们就创建出了一个呃,这个topic recommend下面的一个生产者,接下来我们就在这里写入数据,正常来讲,按照我们的预期。我们在这里创建的这个,呃,卡夫卡对应就会有这个消费者就可以消费数据了,对吧,我们这里是不是里边是埋了一句这个输出的,就应该能看到这个RA data coming对吧?呃,接下来我们就应该走这个标准的流程,最后能够把这条数据写到网GODB里面去啊,我们七磅的结果是这样,那这里边我们就要输入一条数据了,输入什么样的数据呢?哎,这对我们当时是也有一个要求的,是不是这个评分流必须得是这样的一一个数据啊,是user ID product ID score time step用竖线分割啊,所以现在我们的user ID应该是什么?
11:37
对,之前我们已经red要跟这个数据匹配嘛,所以这里边我们是4867,所以这里给的UID也是4867,对吧,然后要给一个product ID,也就是说他又新看了一呃一个商品,给了一个商品。新评分了一次,那么这个评分应该是他之前没有评分过的,那我们这个也不能随便给啊,为什么呢?就是我们这里边的这个商品数量有限,你必须得给这个已经在这个评分数据里边的商品,对吧?啊,我们拖到后边随便看一个,大家看这里有一个8195。
12:16
这个我们看一眼,在他的那个列表里边吗。8195好像没有这个对吧,没有评分过,所以现在。我可以给他做一个评分啊,然后接下来我们随便给一个分数吧,比方说4.0。评价还不错。最后还有一个时间戳,当然时间戳其实并不是特别重要,但是我们可能也会想要一个真实的时间戳,大家会想到这个时间戳怎么生成呢?前面给大家说过啊,在Linux环境下边是不是可以对date加百分之S,这是不是就是我们要的这个以秒为单位的时间戳啊?大家把这个拿到就可以了。好,我们把这条数据生产出来,大家在这里看一下。
13:07
诶,大家看这里果然有一条数据来了,对不对?RA data coming,那接下来这里来了还不算完,我们是不是最后得看到mango里边写进数据去,这才算完啊,所以接下来我们到mango里面去做一个验证,Show tables。但他有什么变化,是不是在之前的基础上多了一个叫做stream res的一个表,一张表,这就是我们说的实时推荐,呃,流失处理推荐出来的内容,那我们看一眼这个东西里边是什么东西吧。find.pretty。哦,大家看是一个列表,然后它其实里边是不是只有一条数据啊,啊,这条数据因为我们刚才只是针对一个用户,他做了一个新的评分,然后这个评分来了之后,我们会结合他之前的K4评分做出一个推荐,所以他自己的这个列表就更新了,别的用户都没有,所以就只有他一条数据,ID是4867,给他做的推荐是什么呢?啊,大家看这是对应的这些product ID和这个推荐评分,3.98对吧,3.43,按照这个降序排列,当然我们综合看起来好像这个评分都不是太高是吧?呃,所以这个是跟数据有关的,我们至少能看到这个输出的推荐结果,这其实就已经达到了这个程序的目的了。
我来说两句