00:00
那么接下来看一下5.5这里啊,是比较5.5.6是一些比较重要的参数了啊,也就是说咱们不管你是生产上去调整一些它的啊,调优调提高它的性能啊,控制并发,你看这里有什么控制并发,控制compassion啊,控制文件的大小。对吧,还有去重内存这些是不是都是比较重要啊啊,所以我们一起来讲一下第一个最简单的去重,那我现在先别看,下面我们回顾原理,我们说默认是不是upset的写入方式,对吧?那upset是不是通过index判断。呃,是要更新还是要插入对吧?那这个index跟什么有关呢?是不是跟咱们record key有关,对不对,这俩是不是这么来对应的?好,那record key关键就是怎么指定,我们前面演示的时候是通过什么语法,是不是就这么写的?哎,我create table在定义的字段后面直接指定为组件就可以了,Primary key not enforce。
01:03
那这个时候它就是什么record key啊,这个是单个组件,那我们如果想要设置多个组件,可以用另外的组件,语法就写在字段的最后啊,写一个primary key,然后括号有几个字段你就写几个字段啊,然后not,那这样呢,我们括号里面指定的就是一个record key。对吧,啊,这个前面讲过了,但其实你也可以不在这边去写啊,在这边你都不写,你统一放到哪里写呢?放到with里边,With里面的参数也可以写一个什么record key。对吧,也就是说这种写法看你喜欢啊,你愿意写在字段,字段后面定义一个组件,还是说在位里面写一个参数的方式去指定都OK啊,那指定组件我们都看过了,那我们看一下,呃,其他写法我看一眼就行了啊,这里是就刚才这个例子吧,你看我在定义字段没有指定组件对吧?没有什么primary key啊,但是我在下面指定。
02:05
Record key record key字段用ID作为一个record key啊,那这种写法也是可以的啊。那还有一个事儿啊,咱们在讲Spark的时候,经常提到一个什么域合并字了,那么说这个就是当record key,也就组件相同的时候,它取哪一条的词。对吧?啊,那一般来讲我们设置的都是一个时间字段啊,会更合适一点啊。那么你看一下说明啊,Record合并的时候会按照这个字段排序选取什么持大的啊,这也是为什么建议大家用时间字段大用时间字段啊,因为时间字段有区别,能体现出大小,体现出时间顺序。当然不一定啊,看你的具体场景啊。呃,那如果我们不指定的话,我们也可以不指定,这个不是必须的啊,不指定它默认为什么啊,处理的顺序,也就是说哪条数据后来啊,就是按照处理时间来讲,谁后接到的那就以谁为准啊能理解这个意思啊。
03:13
那你再看我这个例子,我这边也是指定了一个什么,当然我写的是它的全称啊,最长的这种写法。Right back field啊,我一般都是用一个时间戳啊,TS没有的话我就用呃,取当前系统时间啊,这样可以去重吗?我举个例子,一条数据1A去写入啊,他当时是T0写入的。啊EA,但是如果它发生了flink,发生了问题,发生了重启,它是不是从上一次完整的check恢复啊,那可能这条E12再重新被插一次,对吧,但是当时的插入时间已经是T1了。那如果我们不指定域合并字段啊,这个ID为组件的话,它是不是会取。呃,谁后来就以谁为准,对吧,也就是说它也是只会有一条1A。
04:05
去虫效果,呃。那你手动去用一个获取系统时间也可以啊,就比如说我插入的时候习惯上用什么啊,用一个local time获取当前时区的时间戳啊当前时间。对吧,也可以啊,都一样的,效果好,这个是一个去虫的参数啊。这也是最最基本的啊,最最基本的。嗯。好。
我来说两句