00:00
来对吧,那么再往回来,呃,那么咱们现在呢,这个已经啊把我们这个对吧,这个工具类都封装好了,那么封装好工具类之后呢,那接下来咱们现在啊,就来在这里把这数据写的卡不卡,再往下走,再往开走,那么再往下走干什么呢?再往下走,咱们是不是这个东西得从卡卡里边把这个东西读出来了,对吧?那么咱们现在呢,那如果要读的话,那接下来咱们现在呢,来就写一个我们这个trademark啊state APP对吧,再来写一次对吧,可能呢,再写的话,那就说不上什么时候了,来在这里,呃,我们现在呢,把这个代码是吧,把这些都关掉。然后咱现在这个位于什么层呢?咱们现在当前呢,它是不于我们ADS层对吧,在咱们这里我呢去创建一个我们这个get class在ADS层,然后有一个trademark品牌统计,对吧,这样的一个应统序啊这块呢是我们这个品牌统计。
01:08
写一个主方法对吧,那么这个重序头干什么呢?是不是从卡卡里边这个主题中来读取数据啊,对吧,那既然从卡卡度数据前面这个定义了,那我直接拿过来,我就把前面这定义啊,那我现在呢,我直接把它拿过来对吧,一个是创建我们这个Spark Co,那来指定我们现在的master,以及呢,我们现在AP内要注意如果是Spark,如果是Spark程序的话,这个东西不能是一个吧,至少得俩,对不对啊,至少在俩,我为什么设置为四个,同学们我在这里是不是越多越好,比如说我设置成咱们这14个,是不是越多越好,没用,同学们你设是14个,有十个人空着的,你是没用太多了,知道吧,同学们对吧,就假如说就有些有有的时候呀,同学们对吧,其实比资源不够啊,更可怕的情况是什么呢?这资源浪费对吧,就是有的时候你看气人是不是,就是有些特有一些不差钱的公司对吧,它本身呢,他可能没有那么大数据点,但是。
02:08
嗯,人家配置特别高对吧,然后这个想怎么配怎么配对吧,你看这种,你说那售员提升一个性能,咱们可能想,哎呀,这怎么优化怎么什么的,对吧,人那些公司就比较简单粗暴了,来先提升剩的是吧,这不行,来加加设备,对这个不行了,来可以换个更更好的,等内存不够了是吧,看看市面上最大内存多少拿过来对不对,所以说这个东西呢,大家注意啊,你把这个呢,要先优化这个细节,要在这里面对吧,然后接下来呢,咱们现在呢,在这里这套出一个从我这里来读短从这也读,然后接下来,那么咱们现在呢,如果说要是想去从这里读数据的话,首先第一件事干什么,同学们,我现在要从咱们这里是不是要开始去读咱们这个主题数据啊,第一件是干什么是获取偏移量啊,哎,一样的套路啊,来获取我们这个偏移量,那么怎么来获取呢?这个偏移量在哪存着的同学们买三零存着吧,不是在ready了,不在ready了,所以说呢,那咱们现在获取偏量的话,那应该是通过我们这个outside manager,这里面是不是有一个M。
03:08
不是U的U是不是从咱ready来获取啊对吧?现在M是昨天咱们封装攻击类对吧,这个攻具类对吧?来他用一个盖刀赛的方法,然后呢,把它装给传过去,然后把咱们现在各ID对吧给传过去,然后你看一看咱们当前这个offset是吧,Getet的方法,那么它呢,是从我们现在啊这个my circle里边有一个OFFSET6毛三这个表,然后呢,他把当前这个主题这个消费者组对应的我们的分区和偏量是不是给它取出来,取完之后呢,也是给你封装一个mapb集合是吧?返回给你对吧?那么咱们现在呢,那么封装完这个之后点VR,那么拿到什么呢?拿到是我们的off set mapb,然后接下来干什么了?是不是咱们现在得根据我偏移量来从我这卡卡读数据啊,对吧,那接下来咱们呢,要从我们这个卡夫卡来读取我们这个数据,那么读完数据它返回的结果应该什么说创建我d stream对吧,它直接是不是咱们这个理量对吧,那我现在呢,拿到这个东西之后。
04:08
啊,那应该是判断一下,如果说我们现在这个off outside的map啊,然后呢,不等于五零空,那么并且咱们现在呢,这个off outside map对吧,Outside mapb点我们这个size如果要是大于零的话,说明啊,咱们现在这个数据呢,在我们这个MY自数据库里边是不是有啊对,就咱当前已在我把当前啊这个主题,然后这个消费者组,它对应的这个偏移量维护到咱们这个买思数据库里边去了,对吧?那么如果有的话,咱们是不是可以从根据偏移量的它的一个位置,然后从卡夫卡来读取数据啊的别的都一样,那么从卡夫卡读数据,那应该是麦卡夫卡U,这里边有一个叫get卡夫卡的stream,然后接下来第一个主题,然后第二个呢,咱们是SC,那么第三个是我们这个offet web,第四个是我们的group ID对吧,然后接下来点VR对吧,那么它返回的是我们现在呢。
05:05
Record对吧,Stream啊record stream好了,那接下来咱现在呢,在这里对吧?把这个往上对吧,这个复制一下,往下往下复制一下,那复制完之后呢,这块咱们是不是要提一下呀,对吧?把这个东西呢,咱们给它提出来,等于我们这个道对吧?这个其实和咱原来是一样的,其实就这会不一样啊,其实就这获取篇量的时候,对吧,不是从这个ready获取了对吧?然后接下来把这个呢给改一改,然后这块呢,咱们对吧把名字拿过来,然后这块呢,把我们现在的名字拿过来对吧?呃,那么咱们现在这块呢,这个是不是也得改一下呀?啊这得改一下好了,对吧,那么咱们现在把这个弄完之后啊,把这个弄完之后,那么接下来啊要干什么呢?那么咱现在已经,呃,从我这卡卡里边给你偏量把数据读到了,那么读完之后呢,那这是不是一个采集周期的读,读了读一次数据啊,等于当前的采集周期从卡卡里边来消灭一次,对吧?那么咱们是不是得获取对吧?获取我们这个本批次,呃,获取我们这个本批次他所处理的啊,或者说消费的卡夫卡啊,这个数据情况啊,把这个情况呢,这个获取一下,那么怎么获取呢?咱们是不是可以通过当前这个record stream,然后呢,拿到RDB呀,我们说你要想获取的话,在RDB里面可以获取,对,这就相当于是我说老师,我现在我从卡卡里面就读了一次,对,那就读了一次,那我怎么知道偏量到哪了呢?我下一个采集用去再读的,我怎么知道到哪呢,本身在ID里面是不是存了呀,对吧,那么咱们现在存,那你得把这RD打出来,怎么拿呢?说第stream呀,转换成RD2个方法,一个叫transform,另外一个叫for each RD,对吧。
06:51
那我们现在呢,这两个方法,这两个算子它的区别在哪?一个是转换,一个是行动啊,一个是转换一个行动,对吧,那么咱们现在呢,在这里我们啊还不到行动的时候,咱得转换,转换呢,拿到RTD,那么你对RD怎么处理的,那我对RTD对吧,来这么来处理对吧?那么其实有些有这个我不知大家这个写代码的习惯,同学们就是我的习惯,我一般是不是这样,我现在本身他给咱们传这个参数是不是短要求是一个函数了,那如果一个函数的话,是不是应该是有两部分啊,这个呢,函数的这个参数,这个呢,是不是函数题啊,所以说我一般呢,我都把这个括号啊给加上,但是呢,其实这个东西可以省略掉啊,就这个东西呢,其实可以省略掉,对吧,就你们在写代码的时候,你们可以根据自己这个情况看,对吧,就是我这么写的话,看到这样好多括号对吧,好多括号对吧,但是呢,对吧,感觉啊,我我习惯这样的啊,我习惯这样的对吧,但这个都可以省啊好了,然后接下来那么咱们现在呢,在返问阿里云之前,也就说数据呢,我不处理,但是我想从咱们当前。
07:51
在RD里边是拿一些东西啊,那我怎么拿呢?对吧,那我说它本身对吧,这里边啊,这个东西它本身的RD的类型是什么,这个RD的类型呢,对吧,是我们卡法RDD,但是人家声明的时候注意啊,人家并没有声明说这是卡夫卡RDD对吧,他声明就是什么,他声明就是RDD类型啊吧,他声明的大类型就是RD类型,所因为RDB是一个抽象的一个类嘛,对吧,它本身所有的RD的对吧,这个最顶层的那一个我们这个复类对吧?哎,那你现在呢,这里,那你要去找的话,那你现在得用什么呢?得用它的一个叫outside的方法,对,那RDD没有。
08:27
到阿里没有,那谁有呢?对吧,咱们这个卡卡利有,那咱们是不是可以这样说,我现在呢,把它强转一下,对,把它强转一下,强转成什么呢?强转成我们的卡法利利,对吧,本身想法是没问题的,但是呢,这卡法利利它本身是不是私有的呀,咱们在我们外边访问不了,对吧,其实叫私有的它也不太合适,对吧,因为这里在这这里边你看一看是否罗样,是不是他包访问权限了呀,他指定了咱们的包访问权限啊,它只是包访问权限,对吧?然后接下来那咱们现在呢,既然它不行,那这个时候咱们就来看一看它这个卡卡利的,它是不是这个实现了,或者混住了一个我们叫什么PA outside range的这样一个特值,对吧,所以说呢,我现在其实主要的这个方法,这个特质里边,然后接下来主要这个类型之后你去调咱们现在outside range这一方法,对,然后接下来那么咱们的点2VR一下拿到的是什么,拿的是我们这outside RA,把这个东西呢,提出来and X对吧,把这个东西。
09:27
往外提,那么咱们定义一个我们的空的数组去接收的对吧,every.empty对吧,everyday.empty对吧,注意啊,这个东西其实我们说这是不是就定空数组啊对我看我看大家了,对吧,这个写的呢,的确对吧,也很随意对吧,有这直接闹的,然后呢,有什么直接艾什零的对吧这种对吧,也很随意对吧,但是注意啊,同学们如果这么写的话呢,其实这不是在装啊吧,其实不是在装,就咱们在写的时候呢,你们你们应该在我们那个什么呀,在当家SPA的时候,对吧,你们有一个什么叫优雅的关闭对不对,对吧,其实咱们现在呢,在写代码的,不管是什么语言,对吧,他都有一个说法,这个代码呀,写的真优雅,对吧,的确是对吧,这个但是呢,你如果说要是要要要是假如说要是达到一定的一个积累之后呢,那可能感觉不出来对吧,你像一开始有人给我推荐,说你要是想这个学源码的话,提高代码能力,你就看是不是源代码。
10:22
对吧,那是大概是几年快十年之前,有人给我这么推荐对吧,那个时候我还停留在扫雷那块,这个那个水平的对不对,然后我就看呗,然后他说哎呀,这个代码我们我们那会儿在一块住,然后我一边看一边头疼,他这个代码写的太棒了,我就感觉不出来,然后他这代码写的真优雅,对那个人已经什么已经是我们那个对吧,这个这个这个很很高的一个这个级别了,对吧,然后然后后来呢,这个再过一段时间之后,我就发现,诶有的时候呢,对这个在写程序的时候就做些什么抽取啊,或者什么的确啊,诶感觉是比我那么写好,对,今天咱们有时间啊,我也会让咱们同学给咱们做一个分享,对吧,就是咱们其实我在讲这个东西的时候,那有些同学呢,他会把一些代码做一些抽取,对吧,这个先不讲抽取的一个对吧,大家也不用看,说这抽取的好不好,是不优雅,不优雅,我先不用看,一看就看这思想我觉得非常好的,对吧,今天有时间我会让咱同学给他分享一下对吧?呃,然后其实如果说咱们这个要看原代码的话,的确啊,Spring。
11:23
这个代码的确是写的不错,对吧,要不然不会这么流行,当然那一开始他写的到后来对吧,可能更多的人参与进来对吧?呃,之所以优雅和他这个这个作者本身呢也有关系,对吧?其实这个作者就是写的spring框架,就是没事的时候玩一玩,对,因为他本身主修的是音乐,他的音乐学模式对吧,后来就是拉题拉类的时候写个抓代码,不小心写个S出来对吧,对吧,那那咱现在呢,来把这个东西对给他改一改是吧,改一改,然后呢,这个是我们一个outside races啊,这个是我outside RS,然后接下来别忘了在这里再抽取一个东西出来吧,点VR,然后呢,这个是我们outside stream啊outside stream,然后接下来咱们现在呢,在这里是要做一个结构转换呀,对吧,那接下来咱们现在呢,要做一个结构转换对吧,那结构转换的话就map就可以了,是吧,Map吧是吧,那这块呢,也是个习惯的事啊,我习惯就是一般在这里我就对吧,这个如果多行代码我就画括号了,那小括号行不行?
12:23
行的也没问题,对吧,也没问题对吧,这个画括号方便一点,有的时候什么是不方便,就是我要用我们这个我是匹配的嘛,对吧,方便一点对吧,这个呢,就是我结构的一个转换了啊,这个就我结构的一个转换,对吧?呃,那么咱们现在呢,大家想一想,本身呢,你拿的是我们现在对吧,这个数据对吧?那么这个数据呢,在答的时候,咱们是通过什么形式,是不是应该是字串的形式呀,对,因为你在保存的时候,这个东西呢,它肯定保存的是我们的Jason形式吧,对吧,你看咱们在我们这个上边在哪呢?在我O点版的APP里边,那么他往回写的时候,它是怎么写的?对,往这主题写数据写成什么,是不是把它当前的对象转换成JS格式的一个这个字符串的对吧,来做一个我的传输,那么你现在呢,你拿到的这个应该也是一个对吧,这个这样的一个数据对吧?但是它的本身现在目前啊,目前还不是接格式搜串对吧?因为你是从卡法拿出来的嘛,卡法他把你的数据给封装什么是么?封装1KV对吧,这样的一个对象对吧,现在呢,它还是一条基。
13:23
To对吧,它卡卡里边的一个我们的consumer record,那么接下来,那么你现在呢,是不是可以先将它转换,为什么转换为Jason和串对吧来那么从卡卡中读取数据转换为咱们这个Jason格式的一个字符串,怎么转换呢?那应该record.w value对吧,然后接下来点VR这个呢,是JA森str,然后呢,咱们现在对吧,然后这符串之后,然后干什么?是不是将咱们的Jason格式字符串对吧字串来转换,为什么呢?转换为我们对应的样例率对象啊样例对象,那么这个东西怎么来转换啊,这个怎其实就相当于你在这做一个序列化啊,就相于做个序列化对吧?那么咱们这里是不是也是通过我们现在这个JA啊对吧,同Jason,然后接下来这里边呢,那应该对吧,去有咱们这个方法来把这个拿过来找一下包,然后呢,在咱们这里边应该有一个方法,这个方法呢,叫做pass,然后呢,咱们这里啊,这里有一个pass。
14:23
The object the pass object,然后呢,把咱们Jason s tr拿过来,然后接下来再到这里对吧,然后传一个我们这个class of过来,对吧?那么这个什么类型呢?是我们这个order we对order we好了,咱们现在呢,正好给大家总结一下,同学们,那咱们到目前为止啊,我在咱们这个项目里边,关于我这个Jason,它里面的方法咱们都用了哪些,In pass of,这是一个对吧,那么咱们现在呢,来在这里啊,关于我们这个Jason对吧,它的用法我在这呢,稍微给大家记一下,对吧,Jason中对吧,我们用到的方法,用到的咱们这个方法,一个呢是这个对,这个呢是将我的字符串转换对应的一个对象,是将咱们这个Jason啊字符串来转换为对吧,这个对象找对。
15:23
然后接下来那还有什么呢?这getson点对吧,咱们这是个to什么double对吧,这里呢传的是son对象,然后呢,还有一个是我们这个单位这的一个类型是吧?那这个的作用应该是将咱们这个JA森对象吧,将接对象,然后转换为咱们这个Java对吧,类型对吧,其实就是咱们这个对象类型嘛,找对象其实它俩都一样的,对一样的,只不过呢,一个参数是什么,一个参数是字符串,一个参数对象还有吗?咱还有什么。对,咱们是不是还可以这样,咱们这里Jason,然后点to什么,咱们那个Jason是吧,然后在这里to呢,咱们这里啊son string啊to j string,那么to string呢,那么咱们现在呢,它的一个作用对吧?它的一个作用对吧,那应该是将咱们这个对象转,将咱们的对象来转换为JA森格式的一个字串啊转JA森格式啊吧,它的一个字串转到这里呢,需要传什么呀?这里第一个参数的一个对象对,第一参数对象对,然后第二参数咱们在转换的时候是得拗一个啊然后呢,Con对吧,是不得就一个这个东西,然后传一个过去啊对吧,这块呢要注意一下对吧,然后这个呢是咱们Jason o,对,然后这个呢是我class of对吧,然后呢,这个是我类型对吧,这是类型,这个呢也是对吧,咱们现在的这个类型,看这几种方式对吧,那么咱们现在用这种。
16:59
方式啊,这种方式对吧,然后接下来点二我们这个Vr.VR那么咱现在VR一下,这里拿到的什么,是不是拿到的我们order呀,对,拿order对吧,然后接下来咱们把这order we呢,对这里返回去对吧,那完事了没完事之后呢,咱们DR,我们现在呢这个VR一下对吧,那么这个时候拿到的是我们这个order wide对吧,Order wide,然后stream啊吧d stream,然后接下来咱们现在呢,把这个东西啊给它去跑一下是吧,把它去跑一下来打印出来是吧,啊让你的电脑呢,再次承受一次一次压力测试是吧,然后咱现在呢,把这个东西SSSC对吧,点start,然后呢,这个SSC点我现在啊好了,那这块大家想一想整个啊我之所以再写一遍的话,其实其实就这块不一样,短期这不一样,算是给大家把咱们现在这种偏量方式呢,再做一个总结,那目前到从咱们现在这个。
17:59
这这这这这里面所有东西,同学们现在让你们写应该没问题了吧,要不啥也不看的情况下啊,就上来,我说那卡卡数据在这呢,给我读出来,你应该就可以把它给我做出来,对吧?然后如果说再要求高一点对吧,这个东西你们啊,这个除了把这个代码写了之外,那这个东西没有,同学们应该自己去写出来,等于这个工具类没有吗?那没写出你们得自己把它写出来对吧?好了,那咱现在呢,来测试对吧?那么如果测试的话,来把该写的东西给提起来。
18:31
所有能想到的,咱们这该起都都提起来,这俩不样就零二就行来,那么现在呢,在这里我先起一个什么,先起一个容易帽的啊,先先起一个house吧,Clean号走起来的速动对吧,System c,然后接下来咱们那个start clean horse的,然后杠serve的,然后输密码啊,然后接下来咱现在呢杠EF啊,然后呢,咱可以通过咱现在呢这里比起来大,想想比起来什么原因。
19:21
FQ对吧,DPS对吧,我现在反围起等ZK是吧,点star,然后咱现在呢,先把主keep起起来是吧,主K起来,那主K起来之后呢,咱现在呃,再来去取我们现在格号啊,再去格号。然后接下来咱们现在呢,来看一看,我现在呢,搭建house这个是启动成功了呀,对吧,就起一个啊然后接下来那这起完之后呢,咱们现在就看看啊,这个呢一起起来这然后咱们现在呢,那我现在在启动的时候,对吧,那是不是在启啊的话,那这会是不是应该是把咱们这个对吧,这个adfs先提起来,Start d FS啊。
20:30
这边呢,让它起了对吧,咱们现在呢,克隆一个,然后这个呢,咱们先把这个start,然后h base对吧,给它提起来。然后这边呢,咱们先来到哪呢?O t model,然后red对吧,这里边咱们这个red是不是可以记起来,Red-server,然后red come对吧,然后把这个呢记起来,呃,咱们现在呢,把这个记下来了之后,对吧?然后咱看一看啊当前的一个启动情况对吧。呃,咱这里这个提起来了对吧,然后这个这个it没问题了,还有什么Maxwell是吧?哎,Maxwell这个东西呢,提起来还有吗。
21:08
ES这东西能记起来吧?唱歌还有还有什么吗?整个呢,现在这个起完之后,这个流程大大概是不是都可以了呀,对吧,现在这个master有了,然后呢,咱们red有了,然后呢,卡卡是这个有了,然后ES有了,然后呢有了号有了,对吧,基本上差不多对吧,那么这个提完之后呢,那就来呗,到咱后边来对吧?呃,到咱们这程序里边来,程序里面都写哪些东西呢?对吧,来看一下,首先第一个must运行一下。对吧,这个慢,那咱们现在呢,再运一下分流的是吧。啊,这就是你电脑能承受最大压力的今天啊。这在哪这阶段啊。呃,那么这个完事之后呢,咱们现在DWD层订单和订单明细是先提一下来,把这两个都齐一下。
22:07
嗯。订单,然后订单明细,那么订单订单明细这个完成之后,他主要做了个事,是不是主要做一个咱们这个维度关联,然后维度关联之后呢,咱们是把这个数据经写到我这卡卡的DWD层去了啊,然后接下来那么咱们现在是不是从DWD层把咱们这个把数据取出来,那就谁了呢?是不是我们DWS层把这个order wide的,那么它的运行一下,对吧?在这里把它运行一下,那么它运行的主要的一个作用干什么呢?是不是就咱们双流join用,然后呢,做咱们这个食物分摊呀,对吧?然后接下来那么在我这个on外里边,那么它又干什么了,所以我把数据写回到我们DWS层来呀,对吧?那么当时来读呢,是不是呢,刚才写的这个trade这个mark啊state呢,这个它的怎么的,然我把这个关掉啊,我因为我这一开的话,这个就慢,对吧,我得往断开。
23:01
好了,那接下来咱们现在呢,把我们刚才写的ADS层的这个trademark state,然后呢,也来运行一下啊,也来运行一下。一共呢跑咱们当前的这五个应用是吧?一共咱们呢,跑咱们现在的这五个应用对吧?那么这五应用呢,咱们现在目前主要看它啊,主要看一下trademark state,对,主要看这个让它先起呢,咱们来到这里啊来到这里呃到o model rt,然后接下来咱们现在呢这个DB对吧,Log下边,然后呢去改一下咱们日期对吧,今天呢是我们这个三号啊,今天这个是我的三号,然后呢保存一下对吧?然后呢,他现在呢,开始去执行生成我们的一个业务数据,来Java杠架地貌,然后运行一下看数据啊,然后看结果。
24:12
好了,那么咱现在呢,大家看这个order外的这个数据是不是拿到了呀,对吧,就可以从咱们这里面走到这来,对吧?那么咱这个数据呢,那拿到了整个流程呢,没问题对吧?那么接着然后继续啊再往下走,同学们对吧?那么再往下走干什么呢?别忘了啊,我现在我的需求对吧?我的需求我的需求是什么,我的需求是不是要从咱们这里把数据拿到,然后接下来我现在要统计咱们的品牌的一个情况,对吧?统计品牌情况,那么统计品牌,大家想一想,那么如果要想统计品牌的话,那这个时候你是不是应该是这样的,咱们把我这个当前品牌到底给拿到这个品牌里面可以在在哪可以拿呢?在咱们这order white里面应该可以拿到,对吧,比如说啊,拿到order white了,然后呢,咱们order white它里边大家看是不是有和他品品牌相关的对吧?品牌相关的有ID有什么name对吧?有ID有什么name对吧?然后现在除了这个之外呢,那咱们现在这里对吧,那要统计品牌,那咱们是不是应该是。
25:12
对吧,在什么时间统计的,然后呢,你这个品牌的ID是什么,然后你这个名字是什么,然后接下来,那么咱们现在呢,这个东西对吧,这个当前品牌对吧,这个一共啊,比如说我统计交易额对吧,那一共多少钱对吧,做一个累加倍对吧,或者说出现了多少次对吧,这个东西也可以对吧?那如果做这个统计的话,其实我现在完全可以什么呀,是不是直接在你再写一个,或者是在这里写也可以啊,直接什么呢?直接对吧,咱们这里来这里做一个统计对吧,来order we stream点什么呢?在map下或你直接在上面写也行啊,直接在它上面写也行,对吧,现在拿到的应该是一个order we,对order we对吧,那么拿到order we之后呢,那么咱们现在在这里你可以做一个转换,对吧,这个是order we对吧,然后你现在可以拿到什么东西呢?我可以拿到all way的点,我们现在它的一个对吧,这个品牌的ID对吧?然后你可以拿到什么呢?你可以拿到咱们当前。
26:12
诶,我们这order外的它品牌的一个我们这个名称对吧,平牌名称,然后接下来注意啊,那你要想统计的话,咱们会不会这样对吧,我要想比如我要统计交易额啊,我要统计交易额,我是不是应该把咱品牌ID和名称作为K,然后交易额是不是作为value啊,对吧?那么咱们如果这样的话,那我现在呢,我可以返回原组回去啊,原组回去这个原组的K是什么呢?就是它俩呀,对吧,这相加一下吧,来在这里对吧,它相加一下,然后接着这个value是什么呢?这个value啊,就可以是我们当前这个订单明细中它的有一个是吧?呃,用哪个呢。就这个行吧。Final detail amount对吧?Fair amount是不是咱们现在当前对吧,这个对这这这条啊这条明细对吧,它最后的一个实付金额呀,对吧,实付金额对吧,咱们也是统计交易额嘛,对吧,你可以拿到这个内容,拿到这个内容之后呢,那咱点2V2一下对吧,那么这个呢,是我们这个order什么呢的这个wide啊这个呢是with的month stream对吧,然后现在呢,可以把它当前的交流拿过来,一个呢是往这string类型对吧,它俩那一个呢是我们这个对吧,这个double,那接下来咱们现在呢,那可以汇总怎汇总,我现在想求累计交易容。
27:37
啊,我先想就累积交易了,哎,在这里对吧,那咱现在呢,可来一个什么呢?Reduce by key对,好长时间没写它了,是不是点VR,那这个时候呢,得到了一个reduce啊,那咱现在呢,得到一个这样的结果,好嘞,对,那接下来咱们reduce这个,然后呢点啊点我们现在呢print啊把谁呢,把咱现在呢这个数据打印出来,来看一看啊来看一看,那咱现在能不能拿到咱的这个品牌ID啊,品牌名称以及呢它的一个交易额,对吧?哎,那我现在呢,来运行一下,看一看它的效果。
28:28
来是吧,那我现在呢,去执行我们现在程序啊,来模拟成数据。好了,探测数据之后呢,咱们现在来看一看,在这里最后这个效果长啥样啊,这个这个效果长啥样。好了,大家可以看到是吧,那这里咱们是不是可以看到我现在每一个品牌对吧?然后呢,它的一个累计交易额呀,对吧,每一个品牌它的一个累计交易额对吧?那大家想一想,那么咱们现在这这这这个是在一个采集周期嘛,对吧,你说我现在到下一个采集周期里边,我这个东西是不是还会过来,就如果你数据源源不断过来的话,咱们现在你在这里这东西是不是源源不断过来的呀,对吧,那咱们要干什么呢?那你是不是要把这东西给它保存到我现在对吧,它的一个我的数据库里面去了。
29:28
对吧,好了,那目前咱现在已经把这东西拿到了,但是有些这个细节呢,咱得处理一下,这这这东西这肯定不行对吧?这这这东西的肯定不行,对你看咱们现在这这里边这精度到这儿了,对精度到这这肯定不行,对那咱处理怎么处理呢?我想保留两位小数对吧?这谁呢,给它保留两位小数,那么如果它要保留两位小数的话,这个东西咱们怎么来做呀?是不是应该使用我们这个什么math是吧,对吧?然后接下来点什么round是吧?对mass点我们这round的,然后把它呢给加进来啊加进来然后加进来之后呢,咱们现在这里乘以一个我们这个白D啊,然后除以一个我们的白D对吧。
30:14
对,在这里是吧呢对吧,诶计算结果除以一个100D,这没事了,少啊少括号码在这是吧,我现在这这这这会钱不多嘛。在这啊好了,那咱现在呢,在这是吧,把这个拿过来,然后呢,现在咱们这是它的一个五位数值对吧?呃,这个报结束是谁呢?看一看。这是元素的吗?翻译一下啊在这啊是对那没问题啊好,那咱现在呢,把这个处理完了,对把这处理完了,那么处理完之后呢,把这个稍微停一停啊。
我来说两句