00:00
给保存起来啊,先把这个数据呢给保存起来,对吧,那么如果说我现在这个数据要保存的话,往哪保存呢?本身咱们现在这个数据我这里是不是还其实在内存里边,我是往外输出的呀,对吧?但是我现在最后关联的这个宽表,你可以列成宽表,它呢,其实这个数据还没有保存,那我现在需要往哪保存呢?我希望保存到我们的ES中啊,我希望。保存到我们的ES里边来啊,保存ES里边来,那保存ES之后,咱们是不是可以使用我们的key班的来,就做一些可视化的展示的呀,对吧?哎,那来接下来咱们就来看一看,如果把ES保存,那么咱们都需要做哪些事?这个ES还记得曾经学过吗?应该有点印象是不是啊,不用记太多啊,同学们,假如说我现在要往ES保存的话,首先你必须得知道我的数据是以什么形式保存在哪了,两个概念吗?以什么形式,是以文档的形式保存哪了?保存索引里边的嘛,对吧?这是不是两个重要的概念,那如果说保存索引里边,咱们是不是得先创建索引呀,对吧?那我现在想怎么创建索引呢?我想把每天的数据啊都创建一个索引,那这个时候咱们是不是可以考虑使用索引模板呀,那么在索引模板里面都放些什么东西呢?对吧,那首先第一个,那么咱们可以放些什么,是不是可以放我们这个mapping映射。
01:23
对吧,它可以放什么,它可以放一些别名,对,可以放别名,对吧,那么咱们来看一看,那如果说我现在想把我这订单的宽表保存ES的话,那么这个时候呢,咱们需要怎么来处理。首先呢,第一件事在ES里边啊,去创建一个模板,这个模板的创建呢,对吧,这个呢我就不写了,直接把这题打过来对吧?来CTRLC,然后呢,我们复制一下,那你要想去执行的话,那你要想去执行的话,那咱们是不是得先把这个服务给提起来呀,起谁来的这里什么请ES是不是就可以了呀,对吧?在我这ES执行的时候,其实它本身呢,这里我提两个,一个呢是我们这个集群,另外一个是不是在key班那样把这个呢给提起来啊把这个提起来,那么起完之后呢,咱们就可以通过我们这个啊这个浏览器去访问我们这K班的端口号是5601,哎,端口号是5601是吧,那么一开始在启动的时候,有可能K班的就没准备好是吧,他给你报一个错,现在没准备好的,就是这个咱没事呢,刷着呢。
02:36
啊,这没人说的。好了,那么咱们现在呢,这个K班的啊,这K班的啊,那么准备好了,准备好了之后呢,咱们是不是可以进入到这里边找谁呢?是不是找一个DV tos呀,对吧?然后开始工作对吧?那开始工作之后呢,那咱们这里看一看,咱们曾经呢,对吧?去做过什么事,有哪些索引,是不是可以通过cat indexes来查看一下呀,对吧?那么这个呢,是我曾经啊这个索引对吧?曾经的索引,其实这会是我们日活页,我说这些是不是都是在讲这个D言的时候就瞎测试的呀,对吧?然后接下来呢,咱们现在创建一个模板呗,以前有没有模板的,好像可以通过什么complete来看吧,对吧,来看一看,以前咱们呢,创建一个日活相关的模板,现在呢,我再来创建一个啊,再创建一个这个模板,创建的代码拿过来,那么改些东西,结合着我们现在的具体实际情况啊,首先第一个这个模板名称既贸。
03:45
0523啊,0523,然后呢,叫order inport time,就是和咱们订单相关的,对吧,这个模板,然后接下来那么匹配什么呢?这块呢,也是对吧,0523,也就说啊,只要是你的这个索引名称,那么能和我现在呢这个匹配上,那么这个时候你在创建索引的时候,是不是就按照咱们这个模板来进行创建呀,对吧?然后接下来这里这块呢,也是我们这个零五二十三啊,这个地方二三把这个都改一改啊,你呢也可以改啊,也可以不改,这个根据你们自己一个情况来看,然后接下来咱们在这里做了一些我们这个属性的配置啊,就是当前我这个索引里边都有哪些属性,什么类型的,简单看一下,这里边其实是主要和我们这个订单的信息映射嘛,而且注意他其实和谁呢,和咱们订单宽表。
04:43
和咱订单宽表数据来进行设,对吧,说老师订单宽表什么意思,原来订单里面咱们现在是不是已经和我们维度表用户啊省份呢,是不是进行连接了,对吧?那么得到现在一个其实订单宽表对吧,那主要和订单宽表来做一个预售对吧?那么这里把咱们这所有订单啊都拿过来了,我问大家这个所有订单包不包含我现在不是首次消费呢。
05:05
不是首单的在不在这啊,所有订单是不是在呀,咱们是不是首单,我是不是根据这里有一个咱们是个is the a first order来区分的呀,咱并没有把它过滤掉,所以说你现在其实在统计的时候,你想怎么统计就怎么统计,对吧?哎,不是首单的我可以统计,不是首单的也可以统计,对吧?大家想想我现在如果说啊,我想做这个功能的话,那我现在在这里对吧,把这个数据呢,拿过来了,那拿过来之后呢,那我要把这个数据呢,来这个这个保存到E上啊,我要把它保存到ES上,我问大家这个保存到ES,咱们现在我这个整个的课程上还没结束呢,我们说啊,我现在除了我这个什么首单之外,我是不是还有什么实付分担金额,对吧?那也就是我现在的后面还有功能,但这里我在咱们这一层,不耽误我去做分析嘛。就是咱们在设计的时候,并不是说老师我现在一定要把这个西做到最后啊,一层一层的,然后到最后这层我才去做什么展示,再做分析,其实每个维度都可以啊,每一个维度都可以,你在项目的时候呢,你应该做的这样就是每一个维度我都可以单独拿出去,比如说我现在订单就是这样了,对吧?那我现在对订单来单独做一些什么分析对吧?订单和咱们订单明细到时候关联了,然后我对他们再横一起做什么分析,对吧?其实要灵活一些啊,要灵活一些对吧。
06:26
呃,那么如果说我现在呢,我要把这个创建一下啊,来到这里啊,来到这里改完了,改完之后呢,咱们就执行一下,创建一个这样的一个模板,对吧?那这个模板创建好了,那咱们就得想办法在程序里边说把这数据保存到我的DS里面去啊对吧?呃,怎么来保存呢?怎么来保存啊,其实我们现在呢,大家想一想,我这个数据呢,这个保存的时候,其这个代码咱已经写了,只不过原来是往我们这个这个h base去保存在状态,那现在呢,我想去把它保存到我的ES中,对吧?那么这块呢,咱们可以自己直接对吧来去把它处理一下,怎么做呢,也是以分区为单位,然后接下来把它呢做一个转换,转换之后呢,咱们去做一个这个映射,其实这块我们主要是为了精准你的消费啊。
07:16
看看有没有印象啊,来,咱们把这块呢,给他写一下吧,把这个拿过来对吧,把这个拿过来,那么你现在干什么呢?我现在最后啊,我要这个维护首单状态,其实除了维护首单状态之外呢,那咱们这里其实还做了一件事,什么呢?就是保存我们这个订单啊到哪呢?到ES中对吧?那么咱们现在这里其实呢,要分两步了,这个呢,我就我就标题三了啊同学们对吧,这个呢,就是我们3.1对吧,那么它在维护着我们这个首单用户状态,那么接下来这个完事之后,那么咱们这块呢,是我们的3.2对3.2是干什么呢?它要保存我们的一个数据的保存订单吧的订单数据到哪呢?到咱们ES中对吧,想一想咱们要想去保存的话,ES里边咱们是不是也有工具类啊,工具类都有哪些方法有印。
08:16
加绒。是不是有一个叫批量插入的方法呀,对吧,那么大家假如说啊,我现在呢,我不想批量,咱们我现在大家回顾一下咱们这个写的这个ES工具类啊,让他回顾一下他写的ES工具类,我要想对咱们这个DS做操作,但首先它是没有一个客户端的,这客户端叫什么。这S的客户端对不对,然后接着那咱们在使用的时候,其实就三步,第一个获取客户端对象对吧?然后接着第二步,咱们的这其实最后一步是关关闭,然后中间那一步是不是叫它in个方法来执行啊in good,其实传的是一个我们抽象的action,然后这里呢,我们接触过什么index啊,什么呀,什么盖呀,是不是主要是这些呀,对吧,还有什么book对吧?那咱们现在呢,在这里我们要要对它做用批量的保存,那么如果批量保存的话,对吧?那这里应该去调用我MYESU这里边呢,应该有个方法教的咱们这个insert到insert,那么如果pro音ER传什么呢?那你来看一看同学们,它要求传呀,咱们这个DA引报在这里有问题,对吧?我现在是订单呀,对吧?那咱们这里的话duu呢,是不是说明咱们原来在写的时候,这个方法写的不够灵活,对吧,这个方法接受的是只是咱们duu数据吧,来灵活一点来。
09:42
ED。啥给我都能保存对吧,啥给我能保存对吧,那你说第一用过来我能处理吧,是不是也行啊对吧,所以说我现在呢,在这里第一个二,那你要不啥参数谁呢,咱们应该传一个list子集合,对咱们现在这里应该是order in inform list对吧,这块呢,它还名字叫Du是吧,在这里叫Du e呃,不太好。
10:09
给他来一个对吧,咱现在的这个就是o list。好了,那咱们现在呢,来到这里说第一个order in for list对吧,这个集合对吧,相当于传过去,那但是呢,这里好像有问题啊,Order in for list在哪呢?同学们,咱本身在传的时候对吧?这里边我是不是想拿到一个order in for信息啊,但是你现在根本没有order in for list,而且人家要求你啊,这个集合里放的是什么呢?放的是元组,这个元组的K是谁?是不是应该属于我的一个标记啊,因为我是不是这个加我当时我记得咱们在做这个功能的时候,同学们一开始咱们没有这个K。没有这个K,这个K是我后加的,目的是什么呢?是为保证它密等性啊对这个K咱们是不是放的是我dau的一个ID,是不是放在咱们这个日活的一个ID呀,对吧?放在设备的ID嘛,M midd嘛,对吧,这个后后加的,那结合我现在腾讯这里面这个东西是不是应该放我订单的ID呀,对吧?那这个订单数据从哪来呢?这个订单数据大家想一想是不是得从RDD中来获取呀,所以说那我现在要去保存的话,那么这里应该是对RDD的数据来做一个处理吧,那么处理你现在就批量处理,所以说呢,那么咱们应该是for each partition以分区为单位来对我们RDD数据的来进行处理,那么既然以分区为单位,那么这里呢,它拿到的应该是什么?应该是order in inform I tr短,那该拿到的是一个这样的一个迭算器,然后接下来,那么你拿到迭算器之后,你可以转换成什么呢?也可以把它转。
11:54
转换成我们一个集合吧,对吧,但是这个集合里面放的是什么?这里面放的是我们order in form对吧,这不行,咱们最终呢,在这里是不是得map一下呀,对吧,Map,那咱转换这个东西本身你对吧,给我传的呀,是一个我们这个奥音对吧?这里边你给我传的是一个奥for,然后但是呢,我要给你返回的应该是order in for.ad对,然后还有谁呢?还有咱们这order in for啊还有order in inform,那这样的话,咱们现在点VR拿到的什么,是不是拿到了一个第子集合呀,这个呢,就是我的order in inform list对吧,这个时候呢,他拿到是order in for list,然后接下来咱们在这里把这个order in for list呀给它对吧,去保存一下对吧,那么除了我们这个order in for list之外啊同学们,那么这里呢,还有一个index name这个是不是。
12:51
这个是不是我现在的这个名字呀,同学们对吧,那么这个名字呢,那么这里对吧,咱们在处理的时候呢,那也也得去拼接一下对吧,咱们这个名字呢,那你看一看这个和它的要求匹配上,在咱们这里创建这个索引的时候,对吧,那这块呢,是不是他要求的呀,对吧?然后接下来我直接把它拿过来了,这块其实就是把这时间给拼接一下吧,我这块直接从这拿过来啊,我这直接把这东西拿过来了。
13:24
把下面这个也拿一下,把这个拿一下对吧,然后把这包一倒对吧,把这包一倒,然后把这个日期呢这个倒一下,然后这块呢,有问题什么呢?它要求啊,咱们这个字符这这这里边元组是不是字符串类型的key,但是你现在呢,这里边在获取的时候,是不是我们这个这个浪类型啊,然后转换一下,在这里to string一下,然后这块呢,改一下,这个是stream对吧,那这样的话,咱们这个应该就可以了吧。
14:01
啊,这个0523是吧,这个05230523是吧,来看一看同学们,咱们现在呢,保存到订单数据到ES中对吧?大概的一个套路,对RP的数据呢,来进行处理对吧?然后接下来咱们现在呢,对吧?在这里对这以分析为单位进行处理。然后呢,把它当前分区的数据呢,转为集合,然后调到批量插入方法,对,然后最后在这里才去提交我们平量啊,把这都处理完了,才提交我们现在的便宜量。啊,其实这里有一个可以优化的地方。这里其实有优化的地方。就是对他做优化。对做优化,想一想怎么对做优化呢?来你们看一看上面这个最早的时候是在哪出现。
15:01
我说现在我在这啊,这个最早说在261行出线,然后260行又一次,然后呢,277行,咱们又又第二次,我说现在我可以对他做优化,你们觉得咱们怎么优化。怎么来优化一下呢?大家想一想这个东西我现在在这里,我是不是对这RD进行处理了呀,已经过了做了,做了过滤了吧,我拿的是不是它,然后呢,RDD它本身呢,对吧?它里边不放的是咱们数据,放的是咱们的计算逻辑吧,对吧?那比如说这里有ARDD,然后呢,BRD,然后CRDD,然后DRDD,那么你现在呢,到这里边,假如说我已经通过一个个计算逻辑,一个计算逻辑对吧,然后呢,已经把这个东西给拿到了,对吧?已经把这拿到到D这了,就相当于到filter这了,然后我现在呢,我又想对着C还D做什么操作,那你想想我还该怎么办,我是不是得从头把这接脑机再走一遍,对吧,我是不从头把这逻辑再走,再走一遍呀,那我现在我要不想走怎么办,可以缓存是不是,所以说你看咱这RT拿过来之后,咱们完全可以怎么办。
16:24
啊,在这里做一个优化,在这里做一个优化,怎么优化RTd.catch对吧,缓存一下,那么这样缓存起来,大家想一想,你在这里对案例做过滤,咱们呢,到时候再去对它,你分析为它进行处理的时候,还会再从头再走一遍吧,是不会的,是不是从缓存里面取就可以了呀,对吧?诶所以说呢,这会是一个优化在里边,好了,那接下来咱们现在呢,就得去看一看啊,就得看一看了,呃,看什么呢?首先啊,咱们先来看,先来查一下我这个订单的状态啊啊来flag呢先,然后呢,From咱们这个U_states。
17:08
0523是不是有这张表?对吧,那咱当前呢,这里面已经有很多数据了,是吧?这是用户的一个消费情况是吧,五十来条数据也还行,对吧,也还可以对吧?然后接下来呢,那我现在呢,把这个东西拿到之后呢,对吧?那我现在要干什么呢?我现在呀,要做一个测试,看一看能不能够往咱们这个DS里边来保存啊,能不能往ES来保存,对吧?来把这个程序呢运行一下啊。一起来。要把订单数据呢都保存过去啊,要把订单的数据都保存过去,这个呢可以读到数据了,现在我可以执行我的程序,注意看在这里我运行我现在模拟生账包的程序。
18:02
那么生成数据之后呢,那你回过头来来往这看同学们啊,这里面应该就是偏量发生变化啊,我觉得。然后把这数据拿过来,大家看这里是不是像ES查数据啊,对吧,像ES数据对吧,然后接下来咱看一共是不是多少订单呀,在这里订单生成一个11条吧,对吧,那我现在是不是应该在这里有11个我数据过了呀,对吧,那看一看呗。好像看的是看了11条查询一下来在这里我们现在呢,去做一个查询get对吧?查询谁呢?查询我们的JA报,大家看这里是不是啊,这没有是吧?那应该是把它拿过来,那我用咱们这个呃别名来查一下来CTRLC,然后查询所有数据,这应该是search对吧?来查询一下大概11条对吧?那么订单数据什么样的呢?这里边对吧?订单的ID,省份的ID,对主要看这块省份的名称编码这些东西是不是都有了,然后创建时间这些东西是不是都有的呀,然后这几个金钱这个价格是不是都有的呀,对吧?所以说咱们现在这个数据呢,可以保存到E言上面去,那保存一言的想写这之后呢,大家想想,我还想做分析K班的是不是就可以做了呀,对吧?好了,咱们稍微休息一会啊。
我来说两句