00:00
好,那第一个补充这个依赖,由于我们已经做过测试了,这个依赖呢,我们已经添加过了,对吧,是Li这个plan啊。Blink这个依赖啊,搞定搞定好以后呢,接下来这个工具类呢,我们先不管哈,我们先不管,等会儿用到的时候呢,我们再回过头来说啊,先把这个整体的思路我们先串好,对吧,在这个第一道立场,我们来迎来了第一个。业务数据的表对吧,Dwd trade。啊,这属于我们的交易与cut对吧?嗯,加购好PM,那首先第一步还是获取执行环境啊,但是这个呢,就得多一个环境了。Table烟味对吧,这个获取执行环境啊,那第二。呃,我们要去。读取topic DB。对吧,读取topic DB的一个数据啊,那就使用DDL方式,因为我们要用Li去读嘛,对吧,Li s方式读取叫。
01:07
Topic DB主题的数据创建表对吧?啊,那第三步那就过滤我们想要的加构数据啊,过滤出加构数据。OK吧,好,那第四步。读取。My circle的叫哪个face d?作为lookup表,因为我们要做这个维表退换,对吧,Lookup表。好,那第五步就关联来表白。关联两张表。
02:02
对吧,最后呢要写出,写出呢,咱们既然是弗Li s克,那肯定还是用弗Li s去写出。对吧,还是要用这个弗Li s克去写出啊,那既然你要用弗Li s克去写出的话。那其实就还好了,对吧,你就要建表啊,那使用D点方式啊,创建加构事实表。这表好,那最后呢,我们把这个数据写出对吧?第七步将数据写出啊,然后启动任务对吧,我们先写好,那其实在so里边呢,如果你是这种单个流,你可以在后面加一个print对吧,咱们可以加一个print,然后呢,就可以不用写这个启动任务了啊当然这个都可以啊,都可以好,这是我们搜索专利,那第一步呢,执行环境我们得去拿一个啊呃,在。
03:04
这边吧,随便挑一个就行了啊,只不过说我们再追加一点东西而已,追加一个。Table in对吧?啊把这个还是拿过来啊,然后在这呢再写一个就是stream。Table environment.create,然后因为对吧,RV得到一个table d。没。啊,得到一个table页位,那这是我们的构建的执行环境,OK了,好,那接下来第二步我们要使用这个DDL方式,从这个topic DB主题里边去读取数据创建表啊,那还是一样的table,因为点circle query啊,建表不能用s query啊,它不是插曲take的circle,对吧,我们要去执行一个建表语句,那这个东西应该怎么写呢?还是一样的,我们当然呢,切到01:13的文档啊,官方文档,呃,点开这个connectors,这个时候呢,我们看table API的一个。Connect啊呃,那我们点到这个卡夫卡啊,看卡读数据,当然这个连接器我们已经导过了,因为这个无论是流啊,Data stream还是flink circle它的呢都是这个连接器,对吧,所以你就不用再导依赖了,因为我们流已经读过了啊,那这里面呢,就这样去创建就好了。
04:18
对吧,诶用这种方式啊,那我们把它粘过来,在这个位置我们写一下啊,这是从卡不卡当中读取一张数据去见表,对吧?那我们现在要读的是topic DB啊,读的topic DB,那比如说在这边我们把这个改成什么叫topic。DB啊,然后这儿呢,肯定是hot杜102对吧,哎,那主这个消费者组啊,我们随便写一个啊啊,那这个呢,我们可以改成latest对吧,然后CSV,然后我们改成这个。杰森。因为咱们是阶层格式的对吧?好,那底下这些东西呢,都搞定了,这个倒还好啊,那当然了,你如果说考虑到未来的通用性,那咱们的这个东西是不是可以写到工具类里边,大家想就是从位置对吧,到这儿可以写到工具类里面,然后呢,像这个topic DB加这个消费者组这玩意儿呢,我们可以作为一个参数传进来,对吧,因为你这个不是整体是个字符串嘛,我可以搞一个返回这个整体字符串。
05:21
对吧,当然这是后话,我们再聊啊,关键的问题在于谁呢?在于这个。这个东西呢,咱们肯定不能这样就写了,对吧,首先表明呢,咱们就叫topic DB啊。咱表明呢,就叫topic DB,接下来关键的在于这里边的字段。对吧,你肯定不是u ID behavior什么TS肯定不是这些东西。对吧,肯定不是这些东西好那。咱们怎么办呢?我们要找谁?大家告诉我。这个字段我应该找谁问大家一下。我去哪,这是不是要找topic DB里边放的什么数据呀?我应该要找什么东西呢?大家告诉我。
06:20
就是我得去拿到他的一个。格式吧。找卡夫卡中数据看一下啊,那你再追溯到前面呢?Topic DB是谁写进来的?是谁负责往这个topic DB里边去写数据的,大家告诉我。
07:08
对mawell吧,所以很简单,我找谁就行了呀,我在这边搜一下Maxwell,哎,咱们这不有吗,Ma数据展示。对吧,诶麦克cel呢,数据就长这个样子吧,好,那CTRLC我把它定在这啊啊这个不好看是吧,咱们呢,嗯。你看啊,保留的数据就这些嘛,对吧,呃。比如说。拿这个吧啊,比如说拿这个,因为这个呢是两个都有,这是新增修改删除对吧,三种好呃,那把这个拿过来,因为它是一个,哎,不是新增这个update加音音色的对吧?好,那把这个拿过来,拿过来之后呢,我们做一个这个事啊。呃,因为这样的话呢,咱们就可以看得更清楚一点啊,看到C。
08:02
拿过来。直接拖到最后面对吧,放在这个地方好,然后我们对着这个来写,看我们要的数据,对吧,他我定在这啊。好。那我们你想想看啊,你既然是个杰森,那这些东西呢,是不是咱们的key啊?没毛病吧啊好,那比如说我们挑一下database保留吧,啊,因为我们可能做一个过滤哈,Database啊做过滤那这个呢,Database肯定是string类型的啊,Spring类型对吧,类型等会我们再调吧,也行啊,我们先把字段写一下,第二个table那肯定要,因为我们现在就算你定位了数据库,你数据库里面有很多表,那这个table肯定也要做过滤用的。对吧,这个表也要啊,我们要做过滤,呃,那我们想类型。有没有用呢?对于我们架构数据而言。我们可以思考一下对吧,这个时候呢,涉及到过滤了啊,类型要不要。
09:04
对吧,当然有同学说你别管要不要,你都给我先写上可以吧。啊,那有的人可能那样想的,你都给我写上。是不是对吧,你别管我要不要,你都给我写上,总不会有问题啊,好,那我们说句啊,比如说这边的一个架构叫cut in for,对吧,在这边。啊在这一边对吧,那嗯,就像有他说的,那刚开始呢,有可能我们对于这个东西呢,把握不准对吧,那么都放着啊好,那这个type我也保留啊,Tap保留下来,呃,TS它的一个毫秒数对吧。这个呢,咱们就可以不要了啊TS为什么呢?因为那那能说你这个TS得保留啊,因为你未来假如说要。开窗。你要开窗做这个数据处理,因为你说DWS对吧,DWS呢要做这个,呃,开窗处理。
10:00
做聚合嘛,对吧,你得按照实践时间用它,注意不用它,如果说我们要用实践时间,那也是它。能明白吗?是不是我们用create time或者说operate time,假如有修改的。对吧,这个才真正的时间时间吧,对吧,这个TS谁加的是麦克要加的不需要对吧?啊XID不需要麦克加的啊commit to这个也不需要,这个表示已经写成功了,对吧,这个是不需要的啊,那所以呢,这三个字段呢,咱不需要。他不需要就不管了,那data跟old呢,你得保留对吧,因为按照我们的逻辑,未来大家在工作的时候开发也一样,因为你拿不准这个东西到底要不要。对吧,假如说你拿不准,拿不准怎么办?都保留总不会有问题,那都保留的话,无非它带来的问题就是什么呢?假如说这个不要你都保留了,你下一个呢,会把它去掉,对吧,中间传输就多了一个字段呗。
11:02
对吧,就多了一个字段好,那就传输效率可能会受到一点点影响,对吧。好,那我们呢就知道了啊,Data跟old呢,我都需要保留。啊,关键的问题在于你看啊,假如说这个呢,我们放一个贝塔对吧,这个呢,我们先不要啊。比如说我先写成这个three啊,然后呢,再来一个什么old,好,我都保留啊。对吧,把它写上,那我们的数据呢就都有了。啊,关键问题在于什么,大家看啊,大家有注意到这里边问题了吗?就是接下来呢,咱们是不是要处理类型啊,字段呢,咱们就保留这些个字段,没有毛病吧?啊那这个我们大家说了啊,T sx ID com这个数据呢,可以不要。啊,完全就可以不要对吧,好那。接下来我们处理类型,第一个database string类型没毛病,Table类型没毛病,Type类型对吧?Update in色,那string类型也没毛病啊,呃,那data o,嗯,那我问大家,我用思令类型它能不能把数据加载过来。
12:15
就是我能不能正常的加载到这个数据,大家告诉我。看能不能加载到数据。可以对吧,但是你看呃,对于我们一个数据而言,比如说我们的架构数据对吧,那这里边呢,将会有ID的,ID是不是都在这啊,当然这个地方显示的是trademark那张表啊,无所谓啊,大家知道一下未来呢,这些个字段是不是在这儿。
13:03
是不是在这个位置啊,那我们最终要的是不是应该是这些个字段,大家告诉我。要的是这里边儿的字段嘛,那用思类型确实可以加载到数据,但是。未来对这个数据提取和。加工方不方便。方不方便?很明显。它不方便对吧,所以呢,虽然用旅行能够加载到这个数据,但是显然它很不方便。对吧,显然他很不方便。
14:02
啊,那。怎么办呢?我们就不能用这个类型。对吧,啊,那我们看啊,它是一个。省。Old也是个杰森,那当然他们俩呢,可以用同一个数据类型,对吧?那用什么数据类型呢?你觉得应该用什么数据类型啊,你猜一下对吧,肯定思瑞呢不太靠谱啊,就是说他能够读到数据,但是呢,下游处理就很麻烦。应该用什么?对啊,对了,领导跟方总说的没问题,用的就是map啊,咱们可以用map来处理这个事情啊,也就是说我们要想的就是这个事,对吧?在弗Li格S里边,它也有这个复杂的数据类型啊,比如说我再开一个啊,这边呢,我们专门切到这个数据类型啊,在我们的哪呢?
15:03
Application development,然后呢,Table API circle,这里边呢,就有一个data type对吧,数据类型啊,那这里边呢,呃,我们能看到它里面有很多类型啊,这边有复杂数类型AR。对吧,啊Mar set啊,然后呢,Map还有那个。结构体啊,自定义格式对吧?啊,自定义这种形式啊,你可以自己写这个呢,在have当中也学习过了,那就是咱们这呢,写一个map就行了啊,有一个map,但是map呢,它有KV对吧,它有KV啊所以呢,咱们这边应该怎么写呢,这样啊。我们直接写一下啊啊,把这个麦码拿过来,当然你可以写大写小写都无所谓,对吧,KV呢,先括号,然后呢。String string你也可以写小写啊,这个无所谓OK吧,呃,它这儿不分大小写啊好,那这个参数呢,咱们也是这个点。也是他。对吧,好,这就搞定,但是呢,我们还缺一个字段。
16:03
我们还缺最后一个字段,大家告诉我是什么,我我不知道大家有没有印象。咱们应该还有一个额外的字段,结合前天我们所讲的东西,你告诉我应该是什么?TS。对了啊,就是一个TS,那也就是说你们疯了吗?你刚才说这个TS不要,你现在又跟我说TS对吧?此TS不是比TS这个TS如你说TS呢,不好理解,但是我写成这个大家是不是就知道了。还记得吗?咱是不是写成这个PT就能懂了呀,因为我们未来这张表。搞的数据对吧,对pro time啊,然后呢,要跟lookup表关联的时候,大家还记得吗?在这边我们要干什么,这个事还记得吗。
17:05
看见没?对吧,我们呢,要有一个pro time啊,但是呢,我们之前是怎么写的呀,我们前面确实确实写过这个东西,对吧,但是呢,我们之前好像用的是流转表去。添加的,大家还有印象吗?我们之前做的什么是用流转表用这种方式添加的啊,但现在呢,咱们是要在DDL当中去。添加对吧,咱们呢,要在这个DDL当中去添加对吧?所以呢,这边还是一样的,到这边来啊,我们大家看一下DD当中如何去添加,对吧?点开TABLE1AND circle还是在我们的哪呢?嗯,这有一个时间提取器,对吧?因为当时我们在给大家扩展这个知识点的时候,我们用的是什么,用的是这种方式。
18:02
叫during data stream to tablemotions,对吧,从流到表的转换过程当中去添加的,但是还有一个DeFining in d dl,在DDL当中去定义对吧?好,那我们看一下它呢,更简单了,直接你写个PT,然后is time就好了,把这个拿过来。结束了。搞定了。同吧,咱们就搞定了。哎,这个还是简单吧,对吧,咱们就可以这样去。写一下OK吧,好,那建表语句呢,我把这个拿过来哈,我把这个拿过来,呃,因为在这个里边呢,我们就写到工具类里边就好了,因为未来的我们像这种DDR建表还有非常多,对吧?这玩意儿呢,完全可以写到工具类里边啊呃,其实这个东西呢,咱们也可以写到工具类里边,对吧,那但是呢,我们先。嗯,或者我们直接构建这个工具类吧,好吧,来这样啊。
19:02
呃,我们直接接下来呢,把这个工具类拿一下啊。在代码第一个啊,在卡夫卡U当中补充一个什么呢。Get卡夫卡的一个d dl get卡卡DDL啊,至于这个think到后面呢,我们再聊啊,我们先呢把这个方法拿过来。这个粘过来大家知道了,因为我已经写过了,就是它啊,就是它,所以呢,我们就对着文档当中去拿一下啊,叫盖卡发一个DDL,接下来呢,在YouTube当中麦卡的一个U,对吧,往下写啊。嗯,啊,那直接这样吧,这个类已经写好了,我就直接把这个拿过来啊。叫卡卡这个呢,我们应该是我叫卡普卡对吧,有如说名字起的不一样嘛,好,那这里面呢,这加了一个。空格对吧,呃,数据源主题消费者组,然后呢,这是我们拼接好的卡发数据源的一个地点。OK吧,就是刚才我们所写的那些东西啊,把这个topic,然后呢group ID通过参数传进来,然后呢,杰森。
20:07
啊,阶层,呃之后呢。Group ofet也可以,当然你写那个,呃,Latest。最新的对吧,也可以啊好,那咱们呢,再封装一个工具类啊,因为呃,我们再封装谁呢,再封装这个整体。再封装这个整体。OK吧,咱们再封装这个整体,为什么呢?因为你看我们top这个DB呢,并没有拆分流,那未来你看啊。加购需要订单,要不要呢?要不要加载这张表原始表要吧,那对于这个呃,取消订单支付对吧,退单,然后呢,这个优惠券,因为这些东西都都要吧,对吧,所以呢,我们一样的把这张表呢,我直接写到一个工具类里边对吧?好,那我在封装有工具类,当然这个在文档当中我们得给啊,那完全可以再给一个对吧,他这个string。
21:06
加get。谁的DB?DB。对吧,这个周传好,那我都写了叫topic DB了,主题就不用给了,对吧,我直接传一个谁啊传一个。ID就好了,然后返回谁呢?来,我把这个拿过来哈。拿到这儿。往那一放。对吧,好,接下来呢,再拼接,拼接谁呢?我们直接调用上面的get卡卡的一个DL,哎,他要两个,要一个主题,要group ID主题呢,可以直接给死,对吧,叫topic。DB啊,消费者组呢,得传过来啊,因为未来是有很多的流都需要。去用到。
22:00
DB。都需要用到top DB,这个没毛病啊,但是呢,你每个人用的时候肯定都是全量数据吧,对吧,所以呢,你得把消费者组成进来,你外面消费的时候得给一个消费者组对吧?好,那这个呢,我们也写一个注释啊。嗯,这个是。卡不卡,谁卡发D?主题的卡低的语句对吧,啊groupd,当然这消费者组啊。返回数据拼接好的卡,把数据源。评价好的卡法数据源的一个地点OK吧,哎,那咱们就这样啊,当然这个杠N看着不爽,那不爽呢,那就给它干掉呗,它是R对吧?把这个杠N给它去掉啊杠N然后呢,呃,注意替换成一个空格,这样不容易出错啊replace or给它干掉对吧?那这样的话呢,我们未来在处理一个数据的时候就都会。
23:06
有了。对吧?啊,到时候直接调用它给一个消费者组就好了,那么我们这块呢,就可以写了,怎么写呢?这边怎么写来不用这个搜索语句了,刚开始我们可能绝对用这个搜索语句,对吧?好,那这边呢,我们就直接用my how YouTube.get topic DB给一个消费者组就OK了,对吧?消费者组呢,从这忙过来啊,DWG这个交易域我就不要了啊,直接他的ADD对吧,小会计。然后呢,再点211126啊。尝试给大家又把它变成一个小写啊,只要给这个消费者组的名称,那咱们事情就搞定了,这个OK吧,那我们封装一个工间类以后未来是不是就都。不用去写了呀。对吧,未来可以直接。调用了啊,可以直接调用啊,这这个太方便了。
24:00
对吧,啊,这工具类的有好处对吧?把我们这就是我们当时说了,你把所有的数据呢都保留,那这样就非常通用了,OK吧,好,这是通过这个D点去构建topic DB啊这里边呢,我们学会了,在我们弗Li s里边,它也是有map AR啊,类似于这样的一些复杂的数结构,OK吧,好把这个。
我来说两句