00:00
嗯,到这边来,我还是拿一下这个名字啊,首先呢,我们要导入两个依赖啊,就是关于flink s的依赖啊,因为我们要写flink so的代码,把这两个依赖拿过来,还是放在这个depend的最后啊,我都往后面去添加。然后呢,这边我们可以。刷一下啊呃,然后接下来我们去写我们的代码,先把思路整理一下,我把这个拿一下叫province state。DWS层。我们创建一个。A province state呢,我们先。到时候我们自己手动添加一下啊。一步。还是获取执行环境?获取执行环境啊,那第二步呢,注意这个获取执行环境的时候,我们要多获取一个好的执行环境了,对吧,第二步使用叫d dlli so,当DDL创建啊。
01:20
啊,创建表,呃,然后接下来呢,执行查询。最新查询创建表的时候要注意一下,一个事情提取时间戳。商城。我的妈。对吧,我们要做这个事情啊,提取时间抽生成mark啊,大家还记得怎么去大致的怎么去搞吗?不太清楚了,忘了对吧,这块呢,等会我们一起来看一下啊好,那接下来呢,查询数据啊,诶查询数据的时候呢,要做分组开窗聚合,但由于是circle,所以呢我们可以一起来使用对吧?不用分开去写了,按照事件时间去开窗,还是一个滚动窗口,大家也想一想在fli s里边如何做开窗啊好,那这个搞定之后查询结果有了对吧?第四步将动态表。
02:28
因为我们创见动态表对吧,动态表转换为硫,转换为流之后呢,我们就可以A并写出了。含义数据,并写入clickhouse。写在克雷house里边,最后后后一步,第六步当然是启动任务了,对吧?啊做这个事情啊,那第一个获取执行环境,我们来写一下啊,获取执行环境。
03:04
这边是之前找的class啊,然后呢,我们去拿一个,把这个拿过来。C啊啊province,那除了这个环境之外,咱们还得有一个对。Table experiment对吧,Table inv啊,好点create,把这个inv呢扔进去,加V,得到一个table inv,接下来用DDL的方式创建表,那就table,因为点。XQ的circle。对吧,行一个四个语句进行一个思索,语句在这里面呢,我们可以写create table啊什么什么东西对吧?好,那这个东西呢,我们要去看一下它怎么去做了,来在这边啊打开打开好以后呢,我们肯定要找这个table。API或者circle了对吧,那这个当中呢,你可以在这里边去找,当然我们通过DDL的一个方式啊,当然了,我们可以直接找到连接器,因为从卡夫卡嘛,从卡法读取,所以呢,我们切到这来啊,然后呢,Table and so的连接器肯定是这个卡夫卡的点开。
04:13
啊,在这里边,呃,首先导入卡夫卡的连接器,这个我们已经导过了,对吧,因为之前我们写过了,那它这个方式呢,就在于这来CTRLC拿过来啊。我给他写到这。来到这个位置。对吧,好,那我们呢是out we表,那我们就创建out,我们要从out we当中呢读取数据,那我们创建out we,接下来我们要分析我们要取哪些字段。对吧,这个字段呢,现在放在这儿,那不行,那我们要去找一下我们要用哪些字段,对吧,那这样啊,我把out we拿过来。B all的。对吧,它这里面呢,有这么多的字段,那我们想一想啊,我们要哪些,大家呢,能不能一点一点的报给我。
05:03
我们的目标是求什么?下单的订单数和总金额。对吧,我们要求这个订单数和总金额啊,按照这个地区维度,那你想啊,跟之前一样,那商品呢,我们写的是一个商品,但实际上它有九个维度,这边我们虽然写的是地区,但实际上是不是应该有省份,什么ISO扣的,什么31662扣的。地区ID,省份ID,省份名称是不是都要啊?对吧,所以把这个省份相关的信息我们全部要拿过来,然后接下来我们为了求订单数,订单数我们说了是不是要做去重,所以订单ID是不是也要拿过来,然后金额是不是也要拿过来。
06:02
对吧,金额我们也要把它拿过来啊,所以呢,我们要取的字段就这一些来到这里边来看啊,首先。省份相关的信息,这几个全部要拿到,我把这个拿到这来啊,然后呢,我们根据这个来写对吧,这我们分析的,我们肯定要有这些字段,呃,然后继续还有。还有什么呢?我刚才说了要有这个订单IDID。对吧,这个字段我们也要拿过来,还有我们的金额,金额呢,肯定还是用那个什么Li total amount,对吧,还是用它。啊,那也就是说我们要的呢,就这些个字段。啊,我们要的就是这些字段。对吧,啊,那这里边第一个province name,那当然它呢用类型就好了,第二个province area code对吧,然后呢,我们用string类型,第三个是province so code。
07:02
So,库的四卷类型没有问题,这个呢我们先干掉,先干掉啊,然后呢我们来写。我把这个改成circle吧啊,好看一点啊。调成这个。Circle啊,这样就也有颜色了,嗯,那还有一个31662。这边那统一格式呗,我们都加一个啊2602呢,当然也是这个string。对吧,符号呃,然后ID。ID也要拿过来ID呢,Long类型。这种类型呢,我们当然用big in了。In,对吧,那还有一个是这个。它的一个分单的一个金额,这个金额呢,在招聘当中是big Dis。对吧,那在我们的flink circle里边应该用什么类型呢?对吧?所以这个时候你不要着急啊,干什么事呢,我们再复制一份出来。
08:01
或者。连接器收起来对吧,我们去看一下这当中的什么数据类型,在这里边找一找啊看看,首先我们直接搜它有big disc,那肯定用bigc保持一致嘛。So,哎,这java.mass那我们直接看那个类型啊,没有对吧?啊,它是这样子的,那不行,是招当中的,那我们看一看,如果没有big李SIM,那找一找SIMSIM好像更多一点,对好,那我们来看一下。对。O一下这边它就有这个什么C,这是写的具体的类型对吧?好,那我们就用C类型就好了。你要想如果有big SIM,那就直接用big SIM,没有的话我们就用disem,对吧,那我们目前想到的是不是这些字段呀。对吧,我们想到的就是这样的一个字段啊,因为接下来呢,我们要把这个呢做sum这个呢。Count distinct的吧,啊做count的啊,这些呢,是分组条件好,那这个搞定了,接下来还有一个事情在于我们的时间。
09:09
不对,我们刚才说了,在创建表的时候呢,还要提取事件时间生成我们的wordmark,那这个怎么做呢?来注意看啊,呃,还是到我们的文档当中。在这边对吧,我们要找到我们的。时间。啊,找到我们的时间字段,那在streaming啊,Time。啊,关于这个时间语义的这块啊,呃,DeFine in d dl。对吧,在DDL当中,如果是理由转换的这个就简单了啊,那如果说你搞不定的时候,假如说这个东西你搞不定对吧,我们可以用这种方式,我不是卡不卡数据嘛,对吧,我直接从卡不卡当中用流的方式给他读进来,接下来干什么事?八在流里边就把这个事件时间提取好,然后再去创建动态表。
10:03
对吧,这个方式比较简单一点,你看啊流的方式。对吧,在这边读取一个硫,哎,然后呢,A sign time step and whatmarks,接下来把这个硫呢,转换为一个。动态表对吧,这是一种方式,这个比较简单,因为对于硫提取事件时间我们已经非常熟悉了,我们写太多了,对吧,但是我们这个地方肯定要用d dl even time到这来,DDL它的字段呢,在这。对吧,我先不管怎么样,把它拿过来。这两个字段先拿过来。对吧,把它先干掉,那个没关系,对吧。跟他没什么关系,好,那我们来观察一下这个数据啊,首先他要这么一个字段。Time step3这个类型。啊,得是这个类型对吧,他们SELF3这个类型。
11:02
好,呃,那关键的问题就在于这个呢,我们可以叫RT啊,RT好叫low time。简单一点,RT我们都替换一下对吧,然后worldmark,它这样写worldmark for rt rt生成的,然后呢,这个是不是。延迟五秒钟啊,我的mark减五对吧?当然你可以不写它,不写它的话,那就相当于是用的三这种方式对吧?啊,就是来一条数据直接减一毫秒这种方式啊,当然可以自己指定减多少对吧?这个倒还好,关键问题这个RT我们应该怎么得到?对吧,它还得是time style3这个类型的,那我们数据当中啊,首先有TS吗?没有TS大家还记得吗?我们之前根据这个生成的时候是用的create time吧。用的create time,但是呢,他要一个time step3这个类型,也就是说我们现在呢,需要根据这个。
12:00
我再加一个字段,Create time,它的格式呢,是YYYY啊。啊,那么啊D对吧,然后呢,值N秒,它这个格式的啊,它这个格式我们需要将年月日十分秒的字段转换为time step3这个类型才可以。对吧,我们要做这个事情,那我们要转换,肯定要找函数了,对不对。是不是肯定要找函数,这个有没有问题,能不能跟上思路,现在。我们一步一步的啊,这块确实稍微麻烦一点,如果处理时间那就简单了,关键就在于我们要用这个事件时间。试件时间呢就很麻烦。现在思路上能不能跟上?思路上有没有问题,大家在这个微信群给我个回应啊,因为我看不了这个弹幕。
13:00
有的同学可能可能在弹幕这回了,对吧。这个没问题吧,我们肯定要找一个什么样的函数,将年月日十分秒转换为time step3这个类型的啊,Time step类型对吧?好,那我们就要去找这个函数了,一步一步的啊找函数对吧?呃,那函数呢,在这边functions,那我们肯定要找系统函数啊,不要自定义了,当然也可以写一个自定义的,对吧,我们就找系统的,系统完之后点开,点开之后呢,我们去找到。这边就关于时间的函数对吧,基本的这个逻辑函数与或非嘛,然后这个数学函数加减乘除string的切分啊,什么东西,这个是时间condition的比较的对吧?啊,转换的集合的啊,聚合的哈希函数这些都有啊,那我们就找这个。它是关于这个时间的,这块内容呢,都是关于时间的,对吧?呃,那我们要去找一个,它得有参数,那你看这种参数一看就不是,因为他都没有带括号,都没有带括号,那肯定不行对吧?我们肯定要找带括号的,就不用想,我们得传入参数对吧?根据我们参数来好,那这个呢,是取年月日的啊,不用管年月日周啊对吧?啊季度啊,这些信息我们不用管啊,小时分钟秒对吧,取它这个秒。
14:13
好,那我们看。这个地方就有一些东西了,来啊。这个是data for,那我们这个要一个一个看了啊,Data for叫格式化,诶里边传一个time step,传一个string,这个好像不行啊,他要传的是time step,对吧,我们得传一个普通的这个年月日十分秒去转对吧?呃,那有什么呢?我们就直接给大家说一下吧,这边有一个。这个看叫to timetable。转换为time step,然后有一个对一,还有一个参数4STRING2 string2呢是可选的,中国二看见没可选的啊,就是说可以写,你可以不写,它有默认值,那我们看一下它说这个地方convert data time string,诶转换。
15:05
日期时间的一个字符串是three three1,也就是第一个参数传这个字符串进来,然后呢,With format,格式是three three2default,年月日十分秒,好,那如果我们要用这个函数的话,我就可以写不写第二个参数了,因为它默认值是不是就是年月日十分秒,当然你也可以自己指定,对吧,你把它写一下也没问题,但是既然默认这是它,那就无所谓了啊,然后接下来呢,他说to come to嘛,对吧,Come to a time step,诶,刚好。用它,而且呢,注意这个函数只能在blink客后bli的一个成行接法当中用,对吧,而我们用的就是bli的,因为从1.81.8啊。就已经把引入了。啊,就已经把这个引入了。啊,就已经引入了,所以现在我们都01:12了啊,早都可以直接用了,对吧?所以我们家早的班也是这个blink的一个依赖啊,那我们就用这个函数啊,CTRLC拿过来,然后呢,传一个最参数就行了,那这个呢就不要了,类型不能写在这儿,对吧?那我们可以直接怎么做呢?Is。
16:11
Two time step,然后把哪个字段来create time2个参数你要写你就写它。当然第二个参数,刚才我们观察看见可以不写对吧,我就删掉啊,我就删掉这个就好了,五秒钟太长了吧,我们给一个一秒钟吧,给个一秒钟那那我们建表语句快就搞定。OK吧啊,这是建表语句啊,那接下来下面这一些我们来看一看,首先这儿可以写哈杜102对吧,9092,然后这个group ID我们随便,然后list这个东西CSV,那我们是杰森数据,不是CSV数据对吧?这数据改成杰森主题,那主题呢,我们应该是DWM下划线啊,O的Y的主题。好,这样呢,干进去就好了,当然我们可以改成latest,对吧,这是ear啊,这个呢,那我们想啊,嗯,除了当前我们这个需求之外,是不是下面还有一个需求也要用到弗Li circle这一堆东西,那你想啊,在我们两个需求当中,是不是只有主提和消费者组,我们可能需要改变一下。
17:20
啊,其他东西呢,都不用改,那默认的配置信息就放在这儿,那我们能不能这样来看啊,把这个拿过来。标语句at table对吧,拿到这个位置。拿它对吧,然后我把杠N全部替换掉,CTRL加R啊,然后呢,杠N我全部替换成一个空格。可能稍微好看一点啊,那这样我们看行不行啊,我直接把这个干掉。啊,从这呢,我给它干掉,然后呢,拼接一个什么值对吧,把这个都干掉啊括号。然后呢,我们拼接一个。
18:01
这个地方少了一个双引号对吧。好,来上一号啊麦。我们看一下这个地方,我们干掉东西啊,我去我重新弄一下啊。对,这个地方的双引号到这儿。到这个地方我全部给它干掉。对吧,啊,然后这边呢,我可以做一个什么事啊,我直接拼接一个组正进来。对吧,我直接拼A一个字符站起来,好,这是加号,然后呢,这边我再来一个加号,然后叫MY,我能能把刚才的那个内容,我到这来写一个函数啊at卡不卡比例好好当然了,他现在呃报错。啊,他现在报错,那这个没关系啊,这个没关系对吧,到这。嗯,看一下这个地方是不是有一点小小的问题啊。这个括号。当然这个地方他肯定会报错,是因为咱们这个地方有问题对吧。
19:03
拍一个这个。哎,好,那待会我们再说吧,因为这个还没写好对吧?啊这那能不能理解,也就是说,因为未来呢,这个东西啊,这个东西它明显是一个什么公用的啊,我们只需要传两个参数,一个呢来括号我传一下,我先把这个稍微的去写一下。对吧,大家写一下,那这边呢,我们加一个什么。两个东西在这边我们定义一个。A topic source topic对吧,它的一个主题,我们读取的主题好,接下来有一个group ad。对吧,我们先不写啊,然后呢,我把这个。Topic和ID传进来。啊,我直接拼接一个这个字符串进来,那这样下面呢,我们也可以复用了,对吧。
20:00
好,那接下来呢,我们就把这个方法来写一下,呃,这个我就不写了,直接就跟那一样啊,我在这边来做一下这个事情。考法当中增加一个方法就是它。在卡把U当中对吧,然后呢,我们在下面再增加一个。挂serve,我们叫什么东西啊,Brook斯啊不啊,主题传进来topic group传进来latest杰森对吧,这个搞定啊,是我们的一个D点,把它做一个返回。对吧,好这边呢就搞定。啊,拼接一些东西进来。对吧,我mark,然后我看一下这个地方有没有问题。呃,这个地方我是从connect开始写的,对吧,我对比一下这个地方应该是缺东西了,我应该把这整个的拿过来CTRLC啊。定义在这,我们对比一下,这里边是不是少什么东西啊,嗯,我看一下这个地方,我可以既然这样写了,对吧,我可以把这个东西呢。
21:03
Connect with对吧,然后这边我加一点东西啊,加这个,把这个写上,这边呢有一个括号,然后with。我把面括号加上对吧,然后这个里边我看一下这个,最后我没有加最后的这个括号对吧,没有加最后的括号呢,我们到这来。加上右半边括号,哎,我们把这个东西啊,以及这个括号解到这个位置也可以啊,就是弗link s克里边最恶心的就是现在像这种什么字符串的一个拼接不是。啊,而且还是Java,那如果是SKY了,这个事也好了啊,我们可以用三个双引号来解决这个问题,对吧,他不喜欢flink circle是不是,就是因为它里面大量的用到这种字符串的拼接不是。啊。
22:00
很容易出错啊,很容易出错。对不对。没问题吧,那这个就搞定了啊啊,当然了,可能有问题啊,因为我们拼接的啊,拼接的可能有问题,但是有问题我们就调一下呗,对吧,无非就是界面语句里边可能哪个地方多了逗号啊,少了逗号啊之类乱七八糟的问题,对吧?好好这个呢,我们就行啊,当然这两个东西我拿一下啊个数8ID对吧,我去把这个拿过来。All topic对吧?啊,把这个拿过来,那其实最恶心的就在于各种字符串的一个拼接对吧。
我来说两句