00:00
我们接下来呢,对他要做一个。测试用到犯停的时候想到抽象方法,对了啊,就可以啊,可以这样诶。呃,那这里边呢,我们稍微的再做一点处理啊,做什么处理呢?因为一般来说在生产环境当中啊,我们写这个代码的时候,对吧,写这个代码的时候,那这里边呢,有正常的函数,有有正常的方法,有这个抽象方法,呃,那所以呢,有时候我们就不这样处理。我们怎么处理呢?写一个这个接口。啊,我们会写一个这个接口,然后呢,把抽象方法专门放到接口里边,假如说其他也有人用呢,对吧?啊,接口可以做到这样的一个使用方式啊,所以呢,我们这边来一个这个。啊,讨厌啊,还撒娇你看。NC的一个这个啊,假如说呢,我们叫join风是吧。他是负责装引的,对吧,这个呢,我们实现一个接口啊,啊,那把这两个方法呢,我们放到接口里面来。
01:07
考察X点对吧,放到这个接口里边。好,那这个接口里边像这个东西就不需要了,对吧,像这个东西不需要了,好那这个T呢会报错,所以接口呢,我们也写一个这个T啊,整个泛型对吧?啊,然后接下来这个地方,那他报错呀,所以我们要实现这个什么。接口啊叫。呃。SNC的一个转方式。对吧,好,那这样的话呢,这块也没有去报错了,也没有去报错了,对吧,所以一般生态环境当中遇到这种抽象方法,我们看方不方便提啊,方便提呢,我们可以提出去,可以提出去,因为这样的话,呃,这两个方法就可以被复用了嘛。对吧,这两个方法就可以复用了,假如说有人在用到这两个方法的时候,是不是直接实现这个接口就好了。
02:03
能懂这意思吧,啊,这个就稍微做一个提取啊,当然有同学说我不想提这个无所谓,这个就无所谓了,其实就还好,对吧?啊,有时候呢,我们可以把抽象方法专门专门提到这个接口里边啊好,那接下来呢,我们做一个测试啊。做一个测试,呃,那这边要做测试的话呢,我们肯定要把这个,诶exce开了对吧,开了好,我们要做测试,那大家想要做测试,我们的表里边是不是得有这个维度信息。得有维度信息吧,是不是。没问题吧啊,而且要开的东西我们得想一下了啊,其实接下来就几个维度关联,我们没有写啊,大家都一样,进程呢是不会有什么变化的,所以这个时候测试之前我们先写两个东西,一个数据流,大家一块来想啊,第二个程序。程序对吧,好,那数据流呢,那当然是web APP发送请求到。
03:02
然后X呢,将数据写到我们的my circle,然后由flink APP,就是flink CDC这个程序将MYS写到卡夫卡,啊卡夫卡呢,这个层呢是ods层,对吧?然后接下来呢,由弗link APP注意将数据又写到我们的卡夫卡。和。这个当然是我们的DWD。和dim层,然后接下来由当前我们这个Li APP。将数据最终要写到卡夫卡啊呃,这个呢是。DWM层好,但是这个弗Li APP啊,它要依赖于什么,这个不能忘了。对吧,它要依赖于red,所以说等我起的时候呢,这个red也要启动。
04:00
啊,依赖于这个好,那这个web ABB呢,跟nexx跟my circle这一套我们。啊哎,正常的,这边少写了一个东西,Spring。Put由落盘到my circle对吧?那前面那三个是不是相当于一个整体,之前我们说过了,是Mo DB对吧?Mo DB,好,My circle对应的就是my circle自己,呃,弗lib这个呢,叫弗Li CDC,大家还记得吧,对吧?好卡夫卡依赖于ZK,我们要启动的啊,这个东西越来越多了是吧?呃,弗林格AB第二个叫贝斯DBAB啊呃,然后呢,到卡普卡,好卡普卡埃迪贝斯呢,在这儿它依赖于什么呢?ZK。啊,或者说我们写成这样啊,写成Phoenix。这样好1.phoenix对吧?啊,那这边呢,应该也是Phoenix,它依赖于这个ZK,依赖于这个HDFS,还依赖于这个H。
05:05
对吧,它依赖于这些东西,好,那接下来呢,是咱们当前的叫all whiteb,它呢依赖于red啊,所以red等会也要开好,最后呢到卡夫卡。啊到卡不卡,那这个是我们整个数据流对吧,我们要做测试,那首先我们得保证我们服务得开起来,对吧,先开服务啊。嗯,那首先呢,我们开一下HBFS啊,因为他要这个。推出安全模式嘛,所以时间比较久,我们先开它,然后再开其他东西,这样的话就相当于多线程共同工作的,对吧?啊提升效率倒杯水啊。
06:03
好,这个开好之后呢,我们开启这个。ZK,然后呢,开启这个卡夫卡。好,然后我们的对吧。so.com,好,那我们进到这个看一眼啊,杠还是杜102,反正多我也不查了,所以我也不加那个杠杠IW啊,然后呢,拼一下好,这边呢没有问题对吧?呃。
07:02
K新,我们先把这个数据啊,这数据呢,是之前143有这个数据的,我给他清掉吧,Flash啊。对吧,给它清掉好跟之前数据呢,没有什么任何影响就好了,那接下来我们想一下,我们这些都开了,然后看看这位这个时候呢,我也就不去校验。HDFS有没有开起来了啊,肯定都开起来这么长时间了。但是阿斯呢,我们得稍微等一下对吧,因为他也要做这个初始化。还是一样的,现在呢,它是reading的名字呢,对吧,等到我们看到这个表名的时候就可以了,你看我们的reading这么多了。
08:04
好,现在呢,是表明是表明了,那这个就搞定了对吧?呃,搞定了之后呢,我们就进到这个Phoenix,我们也可以看一眼啊。好,那到现在为止,咱们的东西都已经服务端都已经开启了吧。服务端是不是都开起来,我们校验一下卡普卡ZK开了啊,然后peni斯都能起来,不表明我们ZK还是点还是被开了,开了对吧?好都开起来了,然后呢,开这一边啊,开这边的时候要注意一下。开这边我们要注意什么呢?注意啊,就是现在我们的维度表里边有数据吗。都没有数据,是不是没有数据肯定不行啊,肯定不行,所以呢,我们现在要做一个什么事呢?把注意啊来看,把这个flink CDC这个代码呀,注意做一个修改,把这个地方呢,我们第一次启动的时候做一个初始化,因为我们现在这个表里面数据啊,维度数据已经有了,我们是不是应该改成初始化,让把这个维度信息全写进去啊,有没有问题。
09:15
来注意看啊,这块你别不提这个,直接去做测试,那就会有一定有问题,因为现在我们的表里边儿都没有数据是不是。我们的现在表里边都没有数据,那肯定有问题。啊,大家扣一下一啊,然后我把这边有的数据呢,我给它清掉,这个数据呢,脏数据对吧,我就不要了啊,这几条数据都不要了。好,然后我还在这个KV1里边也加了数据吧,看我还记得啊。这个数据没必要对吧?啊,要这些数据到最后呢,都都不好分析了,呃,然后还有哪些事实表不用关心啊,事实表无所谓。就是维度表,因为事实表我们重新造嘛,对吧,好这个就搞定了,应该我就改了这几个维度表啊呃,那接下来起我们的程序,注意这个时候要起呢,呃,起我们的被CD先起它啊,先起它。
10:17
有没有同学知道为什么要先起它?那按照之前我的套路,不都是先从弗CDC,然后被DB,然后再起那个out吗?不是按这个顺序起的吗?为什么这一次我要先起被CD?大家能不能告诉我?啊,还有同时你发现这个问题之后,这个问题如何改呢?对吧?啊,你也可以告诉我。想一下这个地方我为什么要先起被CD,按正常来说,不应该先起这个弗林格CDC吗?对吧?
11:00
哎,班长说了,先读这个table process,对了啊,就是说如果我们掀起弗林格CDC,那么我们两个流啊,还记得这个被CD2个流吗?对吧,被CB2个流好,那如果掀起了弗林CDC,比方说啊,我举个例子。我掀起了弗林CDC,那数据呢,就写到卡夫卡。Ods对吧,好,接下来我们的被CD,被CD呢它是两个流,一个呢读这个数据,一个呢读table process。对吧,要读这两个数据啊好,那如果说掀起他他在卡不卡了,那这两个流的数据同时读,那有没有可能,哎,我读到数据的时候,但是table process这个数据还没有读到呢。有这种可能性吧,那我这个时候过来的数据怎么样,不是数据丢了吗?
12:01
对吧,好,那我可以先起他再起他没有问题,但生长环境当中你没办法呀,你生长环境当中数据是一直来的,对吧,那如何避免这种问题呢。可以怎么做,大家想一下啊,就是我们这个代码做一点小小的调整,做什么调整就够了。我们可以怎么做?S的顺序改一下没用,顺序有什么用啊。并行的顺序没用啊。啊,大家先想一下啊。见表放在弗CDC啊,大家先想一下吧,啊,等会我们来说这个问题,好吧,我先把这个测完啊。
13:02
然后呢,我们开启当前奥的APP表,把它开起来啊,然后呢,我们开福CDC。啊,这个反正我们得造数据啊,得造数据它才会有打印,所以说呢,没关系啊,我们开弗Li CDC啊开起来弗Li CDC呢,初始化它会读数据,读完数据之后呢,它会往这个埃斯菲ix里面写和卡夫卡里面写,但是卡夫卡实时数据呢,我们不用关心,对吧?诶这个实时数据我就不要了。对。事实数据我不要,对,我暂时先不要这个事实数据,我只要这个弗林CC里边的数据。把它读过来。啊,我们先把这个初始化做一下。好,你看这里边由于初始化啊,它会有很多的数据,对吧,它会有特别多的数据,好这边呢,连接到最新的位置,那这边呢,也会有很多数据打印。
14:00
对吧,有at的,也有这个卡不卡的,那这边都是at的,我们等待这边写完啊,我们等待这边写完。好,现在剩要是卡不卡数据了啊,又来了,这辈子数据这个没关系啊,我们等待这个雪白。写完之后一定要确认一下所有数据没有丢啊,我们等会告诉大家这个东西应该怎么确认。啊,这个打印比较慢啊,其实他可能早都写完了,对吧,我把这个。这个大家看到有很多的数据对吧,在往里写。因为还是在于我们是虚拟机访问Phoenix呢,会比较慢啊,会比较慢一点啊。好,这边呢,终于完了,完了之后不要着急啊,那这个时候有的人说可以造数据测试了吗?并不是我们要做个什么事呢,确认一下数据是否真的都写入了,怎么确认呢?首先我们看啊,呃,CATEGORY17条数据啊,17条数据好的,那接下来呢,我们select count。
15:11
From。注意开立一这张表对吧,好。17条没有问题对吧,好,那继续。然后再来呢,我们查这个user吧,我们PU也可以啊,这几张表SPUS12好,SPU我们找一下叫SPU。12没问题吧,SKU小于零没丢啊,呃,然后我们看SKU。SKU35,好,那接下来找SKU。你要确认一下数据没丢才行,SKU35这啊来注意这。35条也没丢吧,呃,那接下来呢,还有我们看一下还有什么呢,还有这个user info啊,User info我们要查一下user in应该是4000之前我们看过啊。
16:10
4000来看啊,User info。找到我们的优音四。来切到最后一页,注意这个现在是第四页,然后呢,1000条,也就第四页也是满的4000对吧,那我们下一页看第五页没有数据,是不是刚好4000条。对吧,好,那下来还有一个我们的什么呢?还有一个是我们的这个省份表,我们也查一下,还有trademark对吧,省份省份base province这个啊。34个好,那这边呢,我们看一下省份表里边我们维度信息是不是应该base province34条,注意看这边34。对吧,没有丢啊,所以大家测试之前一定要把所有数据导进来,那接下来还有最后一个trademark。Trademark叫贝,Trademark这张表好12个,哎,Trademark是12,没问题吧。
17:07
一到11啊,之前我们自己写了一个17,我记得对吧,这里边我们自己写了一条数据啊,我们自己做测试写了一条数据,大家还记得吗。啊,写了15LV5上海对吧,所以它是12条,我们表里边是一条也没丢吧,对吧,这个对的啊,你要不想这条数据你给他删掉也可以,当然我们就不删了啊,不删了,因为我们说过这里边数据比买S多没问题,因为他不会调用到这条数据,没有人来查,对吧?所以这个时候呢,是我们的一个准备工作啊,咱们的一个准备工作OK吧。
我来说两句