00:00
好,那为了做三者对比的话,这样啊,我把这个ods层的代码先写好啊,Ods层的代码,因为这个地方呢,我们只是说打印出来了,并没有写这个ods的代码,当然拿这个测试也可以啊,也可以,那我们先拿这个测试啊,这样为了测试看得更清楚呢,我们在这边创建一个新的表啊。我在这边创建一个新的表来注意啊,在这边我先进到这个库里边,然后呢,我查询对吧,新建一个查询,在这里边我创建一个表啊叫create。Table啊,叫the user。Info。好,这里边呢,我们要放一些字段,那我们看一下这个字段我们放什么东西,三者的对比在这对吧?好,那这边呢,我们看一下,呃,有ID字段,有user name字段有一个。太力字段三个字段,我们就拿它啊第一个ID。
01:02
来。ID,然后我操。好,假如说给一个255,我也不设置什么主件了啊,没什么意义,对吧,第二个是。对不对。啊,Use name对吧?好,那接下来呢,这边我们也用what。第三个是telephone。T啊,它这个电话号,然后呢,我们也用我得了啊,这个最后一个逗号就不要了,注意这个字段呢,来自于这对吧,ID use name,然后telephone啊做这事的行,那接下来呢,我们把这个表创建一下。好。啊,那这个时候我们看一下啊,其实在我们的。麦克,你看见表没反应对吧?但是canal呢?这是canal canal的接表语句,是不是也有?他把建表语句也拿过来了,也就是说他会对介表语句还做监控啊,这是也是一个区别,行,那这些东西呢,我们就不管了,接下来我再做一个什么事呢?来把这个拿过来。
02:08
把这个替换掉,我们就拿这一张表来做三个对比测试啊,来运行啊,把它运行起来。我就暂时先不把它写到这个。哎,等会我不运行它啊,运营它干嘛呢?运行它的话这个不好啊,我把它关掉,我应该运行这个吧,运行自定义的啊,这个不好看啊,运行自定义的。把这个表呢换掉,叫z using for啊来我们运用它,它的话这个结果好看一点。这个我们用的初始化对吧,那没关系啊,我们让他打印。哎,它这个东西啊,Z UN for里边也没有没有数据对吧?啊,初始化的话也没有数据啊,这个表是个空表,那没有问题,行,那接下来我们来做测试啊,这个时候我怎么测试呢?大家看啊,之前我都是一条一条的加的,现在呢,我执行一个这样的测。
03:14
就是说直接往zu z里边同时一条搜索语句插入两条数据。CTRLC拿过来,然后接下来呢,到这边来。选中选择运行已选择的对吧,好,这边呢多了两条数据,然后呢,我们到这边来看一下。刷新。Z等于负,好这边呢,三十三十一张三李四对吧,手机号在这,接下来呢,我们先看这数据呢,两条数据没有问题吧,按数据来分的两条数据,哎,这个数据after,这个after,因为我们是ins色啊插入数据,所以两个after没有问题,那接下来我们看一下这个mal。
04:00
Macel这边注意这个是macel啊,Maxl这边呢,也一样的看啊,两条数据封装两条数据啊,这个我们都看过了,但是这个时候我们要对比一下谁呢?Canal canal这个数据啊,比较恶心,大家看啊。恶心在哪呢?首先看啊,我通过一个circle写出两条数据,对于canal而言,它只有一条数据,它把这个两条数据放哪呢?看A塔是一个。数组,那这第一条数据,这第二条数据。那从这个格式上来说,Canal是不是最不方便,大家看出来了吗?因为canal要做解析的时候,我们是不是还要做一个炸裂?有没有问题?是不是?
05:01
对吧,他还需要做一次炸裂,因为我们未来处理数据肯定是单条数据处理嘛。对吧,明显就很恶心,肯定要有这种方式啊,所以大家就清楚了,为什么在Spark streaming里边我们自自己写啊,自己写反修式化的方式,对吧,他带的这个很不方便对吧,那一条数据啊,一条数据,那这个canal呢,也。肯不好,但是mal是两条数据吧,对吧,它是两条数据啊好,那这是两个一个对比,接下来我们继续啊,这是新增,接下来呢,我们做更新。啊做更新,我们将3031ID3031做一个处理,把它变成名字都变成毛5C拿过来放到我们当中查询。对吧,在这边。我们再来。运行当前这条数据好,更新了两条,我们看一下。
06:01
刷新是不是都变成网五了,两条数据更新完了对吧?接下来看啊,呃,那首先对于我们的Maxwell,它是不是也是两条数据对吧?只不过说呢,它更新的词段单拎出来其实也不方便操作,而对于我们分CDC就很方便了,把整行数据全部拿过来吧,Before,整行的,我虽然知道改的是另一个数据,但是呢,整行都拿过来方便后续操作啊,那after也一样在这对吧,放在这两张数据那可想而知,Canal呢,又是只有。一条了啊,更新后的数据在这往五,又在那往五对吧,它又是一条啊,明显不方便操作好,那接下来呢,还有最后一个删除。我们把这两条数据呢都删掉。看C拿过来,然后呢,在这里边我们去到这儿来。我们做一个删除操作。
07:00
Delete对吧,好运行运行好以后呢,The UN我们发现没有数据了,那这边封装的还是两条数据删除的来看delete。对吧,那delete只有before没有after,没有after好,那接下来呢,对于我们这个数据而言也是一样的,这边呢是。一条这是注意啊,第二个这。这是canal对吧,Can又封装了一条删除的,你看放在数组里边对吧,而对于Maxwell呢,它是两条数据啊,它是两条数据两个delete啊delete的我们看一下在这这。对吧,它是两个DELETE2条数据,只不过说呢,它数据data到里边表示删除的数据,那这个也无所谓,通过tab就可以区分了,对吧,通过tab就可以区分了,好,那其实这个呢,我们做的一个对比,对比结果能看出来谁最好啊。谁用起来最爽啊?
08:11
是不是还是这个弗Li CDC吧,对吧?啊,还是弗Li CDC用的最舒服一点啊,那你像ma这种东西都不太好I差点意思还差点意思啊,而且在mawell当中啊,如果说这个地方应该是一个maxwelll吧,如果说其实maxwelll我们还有一个点也需要跟大家去说一下啊,也需要说一下什么点呢?来我把这个挑掉啊。B。他呢,有这个。叫to,也就是说mace也有初始化功能。啊,所谓的初始化呢,就是说读取买三个表当中的历史数据,但是canal不行,Canel你要做初始化,你也单独去读这个数据啊,它有这个脚本,但是呢,它只能单表做初始化啊,只能单表做初始化,这个需要跟大家说一下啊,那这边呢,我们就给大家写一个对比。
09:09
啊,给大家总结一下这个对比对吧,好对比什么东西呢?对比的东西有来Li CDC。然后呢,麦克。然后可能。啊好,那首先我们circle与数据之间的关系。啊,与数据之间关系,那福林和CDC呢,是没有关系。五啊,注意这个我们讲的是什么意思,大家清楚一下,就是我执行一条circle代表的几条数据对吧,他俩没有关系,你影响几条就是几条。好,那麦克同样道理,是不是也是无,而canal呢,是不是有关系,它是一对一的?
10:05
啊,它是一对一的,所以如果说你用这种方式,一旦出现了一条F影响多条数据的话,那要炸裂。要炸开处理对吧,多一个炸开处理啊,这是第一个明显看就被比下去了,好第二个初始化功能。这个呢可以由对吧,它能做初始化,也就是说访问历史数据,而且呢可以多库多表同时做,而麦。啊也有,但是呢只能单表,它里边呢,要传一个参数杠杠table单表去做啊,那这个地方呢,就是它并不能做这个。啊,并不能做这个好断点续传。端点续展功能大家都有,那这个呢,是将位置信息存在CK,而mace呢,存到MY搜口,而canal呢,本地磁盘啊,当然这三个呃都有这个功能啊,就我就没写有了,大家要知道一下啊,然后接下来封装格式。
11:12
封装格式这个呢是序列化自定义序列化器啊,这个自定义的自定义啊,那这个呢是杰森啊,它呢也是杰森对吧,都封装的是杰森格式好,那同时它还有一个C。S模式也就大家之前学习的自己写代码的,那这个CS模式当中是不是也可以自定义啊,对吧,它也支持这个数据的一个自定义,是这样的一个方式。对吧啊,那其实主要的东西呢,就这些点啊,其实能看出来,那这个当中呢,其实弗Li CDC是最好的啊,是最好的对吧?啊,当然这个地方呢,还可以这个集群,那canel可以安装集群,弗Li CDC呢,由于我们启动在这个高可用的集群上面,所以它高可用的麦不能麦没有高可用的啊嗯,这个地方我们写一下高可用。
12:13
高可用,因为CDC是代码,所以我只要集群是高可用的就行了。对吧,只要我运行任务的集群是高可用的那就好了,呃,麦克五它不是高可用的,但是由于它有断点续传,那也没有关系,就算你不是高可用的,没有关系,对吧?而这个canal呢,也是高可用机型。啊,它可以配,那你配一个ZK,在配置信息当中加一个这个ZK信息就好了啊,加一个ZK信息行,这是我们关于这三个。基于b log的CDC做了一个对比。对吧,我们做了一个对比,其实从这些对比来看呢,哎,那弗利CDC最好,对吧,这个呢,我把它拿过来吧。因为这个是相当于三者共有的功能,下面呢是区别对吧,那我们这样,这个是大家都有的,只不过是保存的位置不一样而已啊,那这个呢。
13:10
是他们三者之间,哎,可能两个没有区别,有的有区别对吧,是这样的方式啊,行,你一定要对比,假如说面试官问到你为什么要用弗Li CDC,那其实你主要跟人家聊这个就行了啊,当然刚才我做的mace或者can的测试,你要想做你就做一下,你要不做也可以,但是无论你做与不做,这个怎么样。一定要记下来,OK吧,其实我们刚才做那些测试,是不是就是为了得到这个结论呢?有没有问题?这块没问题吧。OK吗?回应一下。颜值还是比较高的,对吧。OK。
14:07
呃,我看一下这边有同学提到了什么事。说对于历史数据canal可以建新表,但然后色into新表from旧表,效率比较低,一般我们不这样玩啊,我们如果读历史数据用canal这种方式啊,呃,那有同学说这个没有,没有这个初始化功能怎么办,对吧,怎么办?那查询呗。自己单独写一个查询任务。啊,我自己单独写一个,先用s school,相当于用school,可以导一下,能听懂这个意思吗?单独于没必要说建一张新表,然后音色的图,不需要这样我直接来不就好了吗?对吧,你要导哪张表的历史数据,我先select出来,然后再启动我们的看不就好了吗?是不是对吧?历史数据这个问题其实比较好解决啊,对吧啊,但是它自带的没有这个功能,你要知道一下就好,对吧。
15:00
OK吗?刚才是谁?陈总,OK吗?陈总这边不理我了,你看。好,OK,行。
我来说两句