00:03
那么接下来啊,咱们继续对吧,再往下走,那么再往下走的话呢,那么咱们现在就得回过头来看它了,说现在干什么呢?说意已经啊,已经封装好工具类了,可以读取我们现在这个菲尼克斯里面数据,对吧?然后接下来那我是不是得写程序,从已经分发的ods层中找到我们的订单,它的主体啊,然后呢,把订单的数据是不是给拿过来,对,因为你想你现在呢,想判断是否首单,那你是不是得把订单的数据给拿过来,现在订单的数据在哪呢?是不是在我卡和卡里面有专门的主题来放订单的数据呢?对吧?所以说接下来那么咱们再往下走的话,那我应该呢,去创建一个我们这个对吧,这个应用对吧,创建一个我们这个类啊,然后呢,让他去读取我们这订单数据啊,他这天去读取订单数据,那么这个时候大家想一想,他这个数据从哪来,是不是从ods层来呀,对吧,那么ods层,那我现在呢,在这里把数据读到之后,那我是不是要对他做一些处理,那么在处理的话,咱们再往回写。
01:04
是不是应该是DW层的呀,对吧?所以说呢,那么咱们在这里先去创建一个DWD对吧,这样的一个包,注意啊,就是思路又多了一层,呃,在这呢,我去新创建一个我们这个包啊,新创建我一个包啊,这个呢就是我们DWD啊,这个DWD,然后接下来在这里呢,我就创建一个我们这个啊,要这个类对象对吧?那我现在呢,在这里对吧,给它取名,这是对订单处理的order in phone对吧?然后接下来咱们现在呢,在这里把这个主旨写一下,从哪呢?从我们这个卡不卡中去读取我们的订单数据啊,读取订单数据对吧?然后呢,并对机来进行处理。好了,那么咱们现在呢,在这里啊,把这个主函数写一下对吧?那大家想想要从卡卡里拿数据的话,那么前面的操作其实是不是一样的呀,对吧?那所以说呢,我现在把一些东西给拷贝过来啊,把一东西呢给拷贝过来CTRLC,然后到这呢,我们现在CTRLV粘贴过来对吧?那么首先这个名字改一改啊,这APP内改一改,然后接下来,那么你先从卡卡哪个主题呢?这里不是我们这什么技贸了啊,那咱现在主题呢,发生变化,那应该是我们这个OS,然后order音缝对吧?从这个主题里边拿出去,然后接下来那么这块呢,也改一下,这个就改成我们这个order in for啊,Group啊,然后再往下走,首先呢,同学们,我现在把整个啊,我这个功能呢,我再分一下,那么第一步你要干什么呢?第一步我要完成的功能是吧,就是从我们的卡普卡里边来读取数据是吧,从。
02:53
从我们的卡普卡主题中。来读取我们这个数据啊,那么怎么读取呢?首先第一件事大家想一想,是不是得先把咱们这篇量给获取一下呀,对吧,其实这会的操作呢,那和咱们前面呀,填写的这个操作基本上是一样的了,对吧,再写一遍还需要再写一遍吗?
03:19
那我再写一遍啊来,那咱现在呢,首先第一件事啊,我要从卡卡读数去,首先第一件事要干什么,是不是得先获取我们这个偏移量啊,对吧,这个偏移量其实从哪获取的呀,是不是应该从RA里获取的呀,对吧?来先从我们这RA来获取我们偏移量啊,从咱们这个RA,注意啊,这块就是体力活对吧?那么怎么来获取呢?咱们封装的一个工具类叫oppositeet啊能力。Many YouTube,然后它里面有个方法叫get outside,然后呢,把咱们to给传过去,把我们的ID啊,把咱们ID给传过去,接下来得到一个outside map啊得到一个outside map,然后接下来,那么咱们是不是得判断一下呀,是吧?来啊,判断我的偏量这个是否存在。
04:12
是否存在来决定对吧?从什么位置开始读取数去对吧?那么怎么判断呢?那肯定是if,然后呢,Else啊吧else如果说啊,我们当前outside麦点我们啊不等于空对吧?如果说它不等于空啊,那并且呢。咱们outside mapb.S大于零,那说明什么?说偏向找到了呗,那么找到之后呢,咱们是不是要从我们指定的位置读取数据啊,那应该是我们这个MY卡不卡啊,MY卡不卡,YouTube点这里有个叫get卡卡stream这方法对吧?那么传这么几个参数过去,第一个咱们这个topic得给我传过来,那么第二个SSC给我传过来,第三个偏量给我传过来,第四个个ID啊给传过来,那么点V2下,那么这块呢,应该是我们这card啊,然后呢,D stream,那么咱们现在呢,把这个东西拿到之后,如果说啊,你现在呢,要是没有读到便移量,那如果没有读到偏移量的话,咱们是不是就不能从指定偏移量位置开始读了,对吧?那么咱们呢,直接对吧,从往最新的位置开始读,对吧,然后接下来把它呢给抽取出来啊,把这个东西给抽取出来,然后把这个呢给改成我们的VR对吧,这个呢改成VR,然后这块呢,咱们整体。
05:36
对来替换一下。是咱们的音箱吗?那那那把这个对读一下。来,那咱继续啊继续,呃,那么再往下的话呢,那咱现在对吧,把这个东西拿到了,拿到之后咱们接下来该干什么了,说明白,用你们的话给我描述明白,我接下来该干什么了,我其实每次都写注释,而且在写注释的时候呢,有的时候我特意写的不一样一点,你们用你们的话说我接下来干什么了。
06:20
获取什么的便宜的。是不?咱们当前这个批次,然后从咱们卡法读到这个偏量了对吧?注意啊这里啊吧,现在我估计代码大家如果跟着写的话,应该都没问题了,对吧?但是你经知道咱们现在干什么事对吧?获取咱们这个当前我们这个批次对它的处理的我们这个偏移量,其实对应的我主题的分区啊,我这个就是简单了对吧?那么这个怎么获取呢?那应该是record this stream,然后接下来这里边呢,有一个我们这个transform是吧,然后得到我们这个RDD是吧,然后呢,把这个RDD给反过去是吧?那么对RDD呢,要做一个处理是吧?那么咱们呢,先得去做一个强转吧,把它转换成我们这个T子outside range,然后去调它里边的一个outside rid方法,把点VR一下,得到一个这样的一个对象,对吧,这个本身呢,是一个我们这个数组对吧,这本身是数组,所以说呢,把它也提出来,那么这个等于什么呢?Every,点我们的empty对吧?Every。
07:22
点FT,然后里边放的呢,是我们这outside range,然后因为要给它赋值,所以说呢,把这个改一下,把这个改一下,咱们改完之后呢,咱们给它把这个值啊复一下对吧?开始获取我们现在这个偏移量对吧?然后接下来那么再往下大家能够写出来呢,对吧?能写出来的是不是应该是SSD,点我这个再往下SSC啊啊然后接下来那么咱们现在把这个拿到之后,我是不是要从我这个拿到这个卡卡里拿的数据,然后对此进行处理了呀,对吧?大家注意啊,这块别忘了,也是不是应该去抽取一个新的re DR VR这个呢,是我们这个,然后接下来拿到这个之后呢,那我要对的结构,对来这几个转换啊,对应我们这个ES它的一个结构来进行转换,那么本身目前这这这这里面放的什么,是不是放的是我们的卡。
08:22
消费者封装的一个块呀,对吧,那么咱们需要转是什么呢?大家想一想,这个时候咱们需转的什么的对象。对吧,这个东西本身它里面是不是有那VK和V呀,对吧,然后呢,原来咱们是怎么做的,原来呢,那我是不是把这个东西转换成一个对str,我拿到JSTR呢,是不是取它的一个Y的部分,是不是就拿到了STJSTR的,对吧?然后接下来咱们把这个JSR转换成什么了,说转为J森对象的呀,对吧,但是我现在呢,我不想转成JS对象,为什么?因为JS对象他本身给我提供一些方法,但是他始终不如我自己操作自己的串对象方便一些,对吧?而且上午咱们其实做一件事情什么呢?我们在这里不是创建个压力类叫order in inform对吧,这里是不是创建压力类叫order in inform,对,所以说呢,你完全可以把咱们当前的阶层个字串转换成我们自己的一个order INF inform这样的一个对象,所以说呢,我希望啊,转换成这个东西。
09:21
啊,转成这些东西,那么如果转让这些东西的话,那么具体代码怎么来写呢?那就来呗,那你要想做结构的转换,那么咱们这个算子是不是应该就是卖呀,对吧?卖,然后呢,那么再到这里拿到的是什么?拿到的呀,是一条记录record,对吧?然后接下来咱们要对这个记录来进行一个转换,首先我们是不是可以获取jas格式的一个字符串,对,首先呢,先把jas格式字符串对吧给获取了,怎么获取呢?那么只取它的value部分,点我们这个value,然后VR得到的是一个Jason格式的一个字号,对吧?得于阶格式字符号,然后接下来那我要干什么呢?
10:00
我要将咱们这个Jason合式的一个字符串来转换为我们这个order ino这样的一个对象,那那这个东西怎么转换啊,这个东西怎么转换,其实这个事呢,如果说不介入工具的话,咱们自己也可以做,对自己怎么做呢?对吧?你看这里是不是有一个order,然后呢,For,然后接下来咱们往这里边我给它传值就可以了,对吧?哎,你直接传值就行了呗,来往这order in for啊一倒,然后这里边传什么呢?哎,发现这里有这么多内容需要他传,对吧,你就一个个从咱们金字符串里拿呗,对吧,但是这样的话呢,其实比较麻烦,对吧,那咱们可以怎么办呢?那不有一个我们这个工具类啊,第三方的我们这个啊工具啊叫fast,然后它这里边啊有一个方法,咱们以前用过啊,Pass什么object对吧,以前咱们直接用的就是第一个流传Z串,我给你返回一个,咱们现在是Jason对象,回去直接把字串转成Jason,咱们是不是就用的我这个方法呀。
11:01
但除了这画之外呢,大家看这个方法,它本身呢,还有一些重载的形式,其中呢,有一个重载形式是这样的。有一个出来形式这样的,对吧,那一看到这个形式大家看一看对吧?那么我现在呢,第一个参数是什么?是不是咱们现在要转换的JA子格式字串呢?第二个参数你是不是要把它当前这个jas格字串转成什么类型啊对吧?所以说呢,那我现在完全可以怎么办呢?把Jason格式字串给传过来,那么传过来之后传第二个函数,第二参数的类型,那怎么做,咱们是不是可以从class of来拿到什么类型的呢?是用我们这个order in for对这个类型对吧?来导一下包啊导一下包对吧?然后接下来点VR,那么这个时候他拿到的就是一个order in for对象。呃,拿了一个奥一块,你想。这个方法是不其实还是挺有帮助的,咱们对吧,但是你说它底层是怎么做的个图形的啊,一个个转对不对,但是一个个转的话,那你想啊,他得有一个非常重要的一个约定,咱们肯定得遵循,对吧,你想想我我现在是一个个转这个东西,他肯定没有什么太好的办法,对吧,他怎么知道我当前格式字符串里面有个name,然后我就给你现在个类的name端来复制的呢,是不是你现在名字是不是对应起来呀,对吧?所以说我们上午在创建样例类的时候呀,我给大家说了,我说咱们现在这个样例类名字大家在取的时候呢,不要随便取,这个事是你们做的,一般呢,咱们应该和谁应该和Jason格式的这个属性给对应起来,和咱们数据库的名字呢,给对应起来,尤其是我们现在这个属性比较多的时候,对吧,那么这个时候呢,那比较有用啊,就假如少就俩,那这个东西根本不对应,我自己做一下,这个问题也不大吧,对吧,所以说呢,我特意把这两个东西啊给分开。
12:53
这个呢是一对应的,这个呢是没对应的啊,没对,到时候咱再你你你要想让已经转它就转不了了,你想一想你都是字符串类型对吧,我你留个属性,你这个这个类的属性啊,一个叫UID,一个叫什么if cons的,然后呢,我现在从我们这个这个杰son跟这这个JS里边,我拿到了我们两个内容什么呢?你可以看一看它上午的工具类对吧?我从这里拿到我现在这两个内容,一个叫优转ID,一个叫什么下滑if_cons的,我怎么知道这个优质下划线ID要给你的user ID属性了,我怎么知道这个东西,我给你的if cons cons属性了,我没办法知道对吧?但如果说你要是名字一致的话,底层啊,他通过反射做这个事儿就比较容易了,对吧,那怎么做呢?他会去找,诶咱们当前呢,我这个接层对象里边啊,接周串里边都有哪些,我们现在这个属性啊,它其实也是把这个接周串先找到接触对象,然后就找它属性,然后接下来,那么它会根据咱们属性名底层的。
13:53
用反射对吧,然后把咱们当前这个积森属性对应的值复制给对象的一个属性对吧?所以是最终的帮你完成这个操作了,底头肯定要反射的,那底层肯要反射的,好了,那么拿到这个之后啊,同学们,那么这里呢,我们其实可以做一些处理,怎么处理呢?Order in for啊order in for它里边呢,可以有些属性,其中有一个属性叫做create time创建时间,这个创建时间本身只要是下单了,这个创时间是不是就可以获取啊,所以说呢,点位啊,我呢把这个创建时间啊给拿一下create time对吧,除了创建时间之外呢,那么这里还有两个,一个叫做create our,那么另外一个呢,Order in对吧,叫什么叫create date对吧?Credit,那大家想想这两个东西咱们一下单,那么如果说从数据库里面拿的话,有这两个内容吗?
14:49
没有吧,你看一看咱们数据库表,同学们在数据库表里边,它只有创建时间,但是没有创建的天以及哪个小时吧,所以说咱们现在我是不是可以给它把这个东西赋一下呀,那么怎么赋值呢?咱们现在如果要赋值的话,那么你拿它创建时间了,这个创建时间的格式应该是这样的,比如说2020杠幺零是杠幺零,然后杠啊27号短上记的小时,比如说14点,然后呢,咱们这个30分对14点,然后呢30分,然后呢,比如说是20秒,对吧,它是这样的一个形式,对吧?那你现在如果要把它这个个小时对,还有什么呢?咱们日期拿到那这块咱们是不是得对这个时间做一个处理啊,怎么处理点什么福个利的呗,切一下呗,对吧,怎么切呢?用什么切空格切一下是吧,来喂啊,再拿到的是一个create time对吧,这样的一个数组对吧?那数组里面应该包括两个内容,那么数组第一元素它。
15:49
咱是不是就咱们的天对吧,所以说呢,你这个D的定时器可以拿到,直接呢,通过咱们这个数组对吧,它的第一元素就可以获取到,那么第二个这小时对吧?那么咱们现在是不是它的第二部分内容啊,但是第二部分内容是不是就除了小时之外,还有分钟和秒的,是完了再切一下点怎么例子,然后就什么切的这个冒号切切完之后去咱们第一个元素能看懂吗?对吧?好,那这样的话,咱们现在呢,Order in four啊咱们这给转换完了,传完之后呢,咱们现在可以看一看,同学们在这里第二位啊,拿到的是order in for stream啊,拿到这order INF for stream,好的,那咱现在呢,把这个东西是吧,从我们的卡卡里边把它给拿到。
16:36
啊,然后拿完之后呢,做一个结构转换,那么到底转换成功没有呢?咱们可以在这里做一个我的输出啊,可以在这做一个输出来看一看效果,然后我现在准备运行程序,同学们,那你们现在帮我想啊,我要想看到咱们这个输出,那么咱们都需要起哪些东西,然后呢,咱们大概这个执行的流程是什么样的?都需要运行哪些东西?
17:06
我想在这里看到咱们的输出对我都需要用些哪些东西呢?我把这些东西该起的都提起来看一看啊SQGPS,那目前呢,咱们这里是吧,H base子也起来了是吧?然后呢,咱们现在对吧,这个其他的对吧,看一看H被子,然后呢,A Ms卡不卡起着呢,对吧?然后还有什么red是不是再起一下,对red再起一下,那red起的话,那就是city o model,然后呢red对吧,这个下边,然后呢,Red server,然后接下来咱们这个ready.call把这ready提起来对吧,Ready提来,那么ready起完之后呢。再往下还要起什么,我是不是得对吧起谁对吧,大家想一想,你在这里程序执行的时候,从哪执行,你是先往数据库里边写数据啊,怎么样往数据库写数据,咱们是不是得执行我这个账包模拟数据生成往数据库里写呀,对吧?那你往数据库写的话,那我这个卡卡里面怎么能有数据呢?你不是得有我这个master去监去监控它呀,所以说咱们是得把Maxwell提起来,这个mawell体的话,咱们是个脚本对吧,直接mawell对吧,然后接下来啊,看一看mawell呢,这个东西提起来了。
18:20
啊,马提起来,那马斯提完之后,咱们提起来再往下,卡卡是不是提起来了呀,对吧?那么卡卡提起来之后呢,这里注意咱们第一个先把这数据应该是放在哪,说放到我们这卡卡的这个主题里边去了,应该先放在这了,对吧?然后接下来,那么你现在要想让我这主题里没有数据,那怎么办?你是不是要从这主题里拿到,然后呢,咱们通过这个程序来做一个分流了,对吧?所以说那我现在卡卡起来了,马起来了,那接下来你是不是得把这个我们Spark这个程序给我运行起来,对吧?那么这个运行呢,咱们应该是我昨天写的程序吧,就是我的DB啊mustwell对DB mustwell,然后接下来,那么咱们现在呢,在这里去执行一下啊,去执行一下来,我现在把这个运行起来。
19:05
嗯。这是一个程序对吧?那么除了DB ma之后呢,那么咱们再往下,那通过我们这个程序的运行,它可以从我们这个这个主题中读取数据,然后进来进行分流,那么分到哪的呢?是不是分到ODS开始的,根据表名分到不同的一个主题中去啊,咱们这里是不是主要观察的是不是应该是我们的O的,所以说呢,那么这个卡夫卡有了,那么接下来咱们呢,要从我们这里边来读取数据,那么读取数据的时候呢,我们对它也做一个监控,来到我们的OT model卡夫卡下边,然后呢,咱们来看一看是吧,在这里我们可以通过我们这个卡夫卡consumer啊consumer,然后刚刚bootra。是的。
20:01
然后杠杠topic,然后这个应该是ODS啊ODS下划线,我们这个order ino好了,那咱现在呢来监控它,那么如果说我现在这个主题有数据的话,那么这里我是不是可以通过我这个程序到咱们这order info的主题里边把数据给读出来,那么读完之后呢,咱们在哪是不是在我的控制台上来做一输出啊,所以说你可以把这块呢给运行一下了,对吧,来看一看咱们的效果。来是吧,那么咱们现在呢,他在这开始都读数据,然后来到这里,我们呢,要到哪呢,是不得到我们这个模拟这数据这个这个这个这个目录下面的RP,然后呢,DB log是吧,那么VM看咱们现在把这个数据日期改一改。这个呢是我们27号啊,这个27号,然后执行我们的加va杠架DEMO来看效果啊同学们首先看谁呢?数据应该先到这。
21:06
对吧,听完之后他应该到咱们这个这个卡卡主题,对吧,大家卡卡主题是不是有了,然后接下来,那么你来这里看对吧,在我们这里边听数据是不是也过来了,而且大家呢,要确定一下咱们当前在我order info里边,那么有两个属性,一个叫什么呢?一个叫做日期,那么另外一个是不是咱们这个小时啊,对吧,你看这个是不是咱创建时间,然后这块是不是咱日期,这个是不是小时啊对吧?那么这块读取数据的操作呀,就完事了,注意啊,咱们可以从我的卡卡里边把这个数据给读到啊,所以说呢,到目前为止,同学们,你们选的这个代码,我刚才写这个代码还难吗?但是如果你要想看到这个效果的话,你在这里是不是得走这么多路啊,对吧,你是不是得走这么多路,而且呢,最重要的是我相信你们在做的时候不会像我这样说啊,这么干起的起你运已经该看的都看到了,应该不是这样,对吧?你们可能什么,你们可能在这里看不到什么,你们可能看不到输出,你说在这看不到输出,你去找程序吗。
22:05
不应该吗?假如说你们现在运行完之后发现哟,这里没输出,那你们怎么办啊,你们怎么办?没办法,是不是重跑一遍,如果你跑一遍看不了,重跑十遍估计也没也没戏,对吧?为什么?你是不是就得到咱们这里看一看哪个环节出问题了呀,对吧?那你要看一看这这个卡不卡,这数据到没到这儿了,对吧?那么咱们现在如果说这个卡卡数据到这了,那你就找程序去,对吧,那你肯定程序出问题了,如果说你运行完之后这块都没有输出,那说明什么,说明程序啊,可能没问题吧,那你是不是得看谁,你是不是得看一看咱分流的代码呀,这个那分流可能就没有分到咱们这来,对吧,你要看分流代码,所以说呢,大家跟着我的思路,对吧,如果昨天你正常分流看到效果了,对吧,那么说明你分流代码没问题对吧,就是有的咱们在做项目的时候,有的时候同学代码没事,但是可能去运行的时候呢,有些东西没起起来,对吧,你像我在运行的时候,对吧,我这个程序也没事,Red也起了,是没起mawell怎。
23:06
怎么运行是吧,这都没都都都看不到效果,怎么运看不到效果对吧?所以说呢,这块啊要注意一下啊,这个要注意一下好了,那这块呢,是关于我们现在从我们这个呃,这个订单主题中来读取数据,对吧,这个操作稍微停一下。
我来说两句