00:00
这里面有链接了,这个链接还没传进去,呃,大家会想到我后边是不是就可以把这个连接影视的配置对象也往里传啊,呃,然后我这里还缺的是我需要有相关的表名,是不是我往哪里存,这个也是需要的,好,这里边给大家看一下就是定义。数据文件路径。定义mango DB中存储的表名。呃,那这里边我们比方说这个product,我们就叫做mongo。DB product collection吧。等于我们定义一个就叫好了。
01:02
然后接下来mango DB对不对。我们先定义这样两个表明,然后再去做存储的时候,我们要用的其实就是传进对应的这两个参数,对应的数据data frame,然后把对应的这个配置项作为影视参数传递进去。最后哎,写到对应的表名里面是不是就完事啊,这就是我们要做的事情,好,那接下来我们实现保存到mongo DB的这个方法。现在还报错了,因为这里边是不是我们参数没有定义啊,这里边product df它应该是什么呢。是不是一个data frame啊,好,那么然后下边RADF也是一个data frame,好,这个定义完了之后,这边调用调用就不报错了,但是我们的目的还没有达到,因为我们还没把配置参数传进去呢,对,我们已经定义了这样一个影视变量之后啊,这里就可以把它用影视参数的方式传进去了,Implicit mango con。
02:27
把它传递进去,呃,这样有什么好处,对,这样就是我这里是只调了一次,如果你有很多次调用,很多次保存的话,我是不是就就其他的实现都不用每次调用的时候都把那个传进去了啊,这个就非常方便了啊好,然后接下来我们里边的具体实现,具体实现的过程当中,我们要操作mongo,首先先新建一个。新建一个mon到mango DB的连接对不对?Mango DB的连接我们把它定义成mongo client。
03:10
一个mango客户端。那这个这就要用到K里边的mongo client,大家看到了吧。那这里边可以传进参数,传什么参数呢。得传mongol client UR。Client uri,诶大家看我们选这个开SPA里边的mango client uri,它后边可以跟上我们的配置,是不是要接上mango的那个配置好的UI啊,要传进去啊,Mango con.ui。好,这样就没有错了啊,尽管有点复杂,大家其实想到这是不是就相当于是我们敲mango命令的时候,Mango后面跟的那一串UI啊,对吧,其实就是这个操作啊,我们要创建这样的一个mango client,就是客户端。
04:14
呃,接下来我们定义一下。定义。操作的表。定义要操作的mango DB中的表对吧?呃,大家会想到我们在mango命令里边一般写的时候都是DB点,然后一个表名后边去啊,去find,去insert,去save,对不对,都是这样的一些操作,这里面我们先把它这个前面我们DB点的那个表明先定义出来。好,首先有一个是那个product对不对product。
05:02
呃,它应该等于什么呢?就用我们这里边的这个monggo client,然后它里边要传进我们的mango con.db这就相当于操作我们当前的这个DB了,对吧,这是这个操作啊,然后后边大家看这是这这样的这种形形式后边继续写。函数可理化啊,里边把我们的那个表名要传进去,Mango DB product。所以整体的这个这个写法相当于是什么呢。相当于我们先连上对应的那个DB,然后这是不是写了相当于是写了一个DB.product啊,所以大家就把这个理解成是什么呢。可以理解为。命令行里面操作就是DB.product这样的一个操作,对吧。
06:04
大家可以想象成这样的一个操作就可以了。好,那同样。我们定义一个。那是不是跟上面一样啊,抄下来就可以了啊。这里还是mango con.db。然后后边这里边应该给的就是monggo reading collection了啊,这就是相当于DB点另外一个表对不对?好,有了这两个表之后,那接下来就就可以做对应操作了。首先。如果要是已经存在的话,我应该把它删掉,对吧,如果。表已经。存在。
07:01
则删掉啊,那其实就不用管了,不管你存在不存在,我直接drop一下,这是不是没什么问题啊,所以这里边做一个这个操作啊,Product product collection。我们drop表的时候,怎么drop,是不是直接有一个大家看drop collection这样一个方法,所以直接点drop就把它drop掉。同样,Break。第二。Drop。先把它删掉,然后接下来。将。当前数据存入。对应的表中,呃,这里边我们用另外的一个方式,当然我们可以直接调他的这个save方法对不对?呃,但是这里边他要save的时候,我后面是不是得把DF里边的每一条数据都转成mango DB里边的那种对象格式才可以往里面save啊,这个就有点麻烦,那有一种简单一些的方法,可以直接把data frame存进去是什么呢?就是。
08:17
我可以直接调frame的方法。大家看有一个这个方法。然后第二可以去配置一些option。首先应该,那这里边就就还得写这个对应的U了,对不对,因为你如果要没有用前面这个client来做操作的话,这里边你就得对应的指定这个uri了,那我们这里就多写一下吧,Mango config.uri然后点option。Collection。应该是monggo product把这个传进去啊,下面还应该指定什么呢?指定一个mode。
09:08
啊,写入的话,我们可以指定overri。然后是一个format format这里边就是要指定我们对应用到的。Mongo DB Spark CQ,我们用这个mango DB的Spark CQ把它写进去,用这样的这个格式把它写进去。最后调他的点save方法,这样就直接写进去了。所以大家看,如果要是说我们不做这个,呃,就是前面这个drop collection的操作,是不是直接这么写也可以啊,不用创建前面的这一堆也可以,对不对?这里就是给大家提供两种方式啊,大家都实践一下好,然后接下来呃,那同样RA了,RA也要去做一下操作,我这里就直接把这个copy过来吧,大家会想到是不是很类似啊,也是调一下这个write方法是不是就搞定了,这里注意对表名要换一下monggo,只要把这个一改,对对应的就写进去了。
10:14
那基本的数据写完了之后,大家会想到是不是还应该去创建一些索引啊?对,表。创建索引。大家看一下这个创建索引的方式是什么呢?那还得用到前面的这个product collection了,对吧,我们定义好的这就是product那张表对不对?他可以点点什么,大家能想到吗?创建索引。对,是不是create index,哎,对,就直接去create index就可以,这里边创建索引的时候,大家还记得在命令行里边,我们需要给一个什么参数来着,对,给给一个字段,然后后边得指指定是一还是负一,对吧,哎,这里边。
11:09
本来我们要传入的呢,是一个,呃,就是对,就是就是相当于我们是一个Jason对象一样的东西,在这里我们可以把它包装成一个mango。DB。Object。可以把它转换成这样的一个标准形式,Mango DB object,那么它里边又是什么东西呢?里边就是我们的对应的k value。那个map的写法对吧,大家会想到在product这个这张表里面对什么去创建索引。ID对吧,Product ID就本身的那个下划线ID已经是有索引了,我们还要对product ID是不是要创建一个索引啊。
12:00
那大家看,我们就用这种方式给它创建出来就可以了。大家只要熟悉一下这个写法就就好啊,那同样在下边的这个collection里边是不是也可以创建索引啊?大家会想到RA collection里边有哪些东西需要创建索引?对,他是不是有user ID,还有product ID,这两个我们好像都应该创建索引,对不对,所以我们对这个product ID创建一个索引,另外再对user ID去创建一个索引。这样就搞定了,好,然后最后去把它做一个client的close操作,关闭这个连接就搞定了,这就是我们完整写入数据库的一个过程。看到这个运行完成之后,其实是看起来没什么问题,那我们还得去对mango里边去看一下到底怎么样,呃,大家还记得怎么看当前的对DBS对吧?诶大家看是不是多了一个叫做recommend的一个DB。
13:12
那我现在还是在test里边,我是不是得切换过去啊,Recommend。然后怎么看它里边的表呢?是不是可以show tables或者show collections,好,这里边大家看是不是就是我们定义好的,一个叫做product,一个叫做好,那我们来看一眼DB.product里边。对,我可以find.pretty诶大家看,这就是我们存进去的这个数据。呃,这这是符合我们要求的这种结构,对不对,就是多了一个ID,这是mango自动生成的,其他几个字段都是我们对应的那些字段。呃,大家如果想看这个RA的话,我们也看一眼RA。
14:00
RA的话就比较简单了,就是一个user ID product ID,还有一个评分,这个score,还有一个type step,对吧,这就是这样的一个一个方式,呃,那当然大家可能还会想到你这个到底写写完整没有呢?那我还可以去count一下看看数对不对,诶这个是96,那下边的那个RA呢。是44852,我们看一眼,对照一下。在这个RA数据里边。44852全写进来了,对吧?呃,这看起来是没有什么问题的,呃,这里96好。
我来说两句