00:00
前面也提到了,我们说这个compassion呢,最好是关闭在线,用离线的方式,那么接下来我们就看一下啊,默认mor表的compassion是自动打开的,策略呢,是基于次数啊,五个commit执行一次,那这样的话压缩我们前面也看了,会占用一些内存,呃,跟而且跟写流程绑定在一起的话,数据量大的时候会影响到我们的写流程,那所以我们可以采用离线定时任务的方式执行compassion啊,这样会更加的让我们稳定一点啊。那设置的方式呢,就是将这个enable啊,异步的compassion置为false,那就关掉了,那么这个时候呢,我们也是建议这个调度生成计划阶段仍然保持开启啊,由我们的写流程阶段性的触发我们的压缩的计划啊,这样会比较好啊,只是生成计划而已嘛,对不对,好。
01:00
那使用方式呢,就很简单啊,就是flink run-C全内屏是这么一个官方的工具类啊,Comp,然后呢,指定这个价包,为我们编译好的那个架就可以了,之后呢啊,后面可以指定一些参数,比如说刚刚pass一个表的路径在哪里,就是对哪一张表执行一个compassion啊,这样就OK了,那除了pass之外,它还有其他的一些参数啊,那比如说compassion task,诶默认是负一。那他的意思就是压缩task的并发默认是待压缩group的数量啊,待压缩的数量啊,那就挺好了,那咱们就不用去配了,对吧,另外一个就是咱们这个单独执行的compasion任务需要占用的内存。啊,默认值是100兆。那如果内存够可以稍微大一点,但是呢,这一块内存不会影响我们提交的那个Java了,对不对啊,不会再去影响它了,另外就是这个调度。
02:06
啊。呃,那这个参数是要注意的,是否要执行调度compassion的操作?呃,如果写流程还在不断的写,有什么丢失查询数据的风险?所以你要用这个参数呢,一定要保证没有在写数据啊。那么写任务的时候,也就是说咱们写任务那个计划阶段默认是一直在调度的,除非手动关闭啊。那我们这个现在也用不上,为啥呢?因为我们前面还是什么呢,啊让这个。调度计划这个事儿啊,我们还是开启的啊,就不用不用在这里做了啊。那一个SEQ,这个是执行压缩任务的顺序啊。意思呢,我们现在是从最新的位置开始进行压缩啊,这也是可可选可配的。
03:02
比如说O就从最新从后往前做,Fio就先进先出嘛,啊,就从老的那个地方开始做啊。那默认值就是从从后面开始做啊,从新的地方开始做啊。好service,呃,就service模式的话,它会打开一,就我们这个执行一次,它就执行完就退出了啊就这么一个进程就退出了,那么如果我们开启这个service设设为处的话,它就会变成一个一直运行的常驻的一个进程。那所以呢,我们你你不想要定时调度的话,你也可以干干service对吧?嗯。还有最小的压缩间隔的时间啊,在service模式下的执行间隔啊,那它是按照间隔来的时间间隔对不对啊,这个是我们的呃,一些参数啊,原理啊,使用方式这些东西,那接下来我们实际动手操作一下啊,那我们首先呢,是创建这么一张表,那么我们就将在线压缩关闭啊,调度阶段还是开启。
04:11
那么再往后呢,还是一个mor表啊,那么尝试着多次进行插入啊,那以前的话默认是五次的话,应该就会触发一个tempassion生成park,我们看看还会不会在之后呢,我们确认不会之后,我们再手动执行一下啊,离线compassion好吧。那我就现在在这个搜狗客户端了啊,那就随便了。啊,又忘了写那个组建了啊,组建的话我就在这边拷贝一个,诶,果然有啊。Yeah。好。
05:05
OK,那我们直接快速的来做一个插入啊,先插入一条,让这张表生成。好,现在default里面,哎,我们现在用了catalog对吧?啊,在default下面有个T7,那现在我们插入了一条数据,诶,你看有了一次的commit,好,那接下来我们持续的插入,诶第二次。对吧,现在是702啊,我们应该可以看到它变了,变成1.37追加对吧,再往里追加好了,那接下来第三次德尔塔。啊,我们快速的做吧,呃,接下来是第四次啊。好,接下来是第五次,那么按照以前开启那个异步压缩的方式的话,默认策略应该是五次commit,就会触发一个compassion,那么这个时候。
06:09
关键的时刻来了,我一回车,那我们可以现在是2.74K啊,我们可以等一下诶,你看是不是变了。对吧,那有没有生成一个,他并没有对不对啊,那如果不放心的话,我们再多来一次嘛啊。那已经进行了六次的commit了啊,这是3.43在刷。诶,它反而是生成了一个什么新的log文件啊,新的log文件好了,那我们确认就是,呃,那。呃,或者我们看了一下之前提交过的,你看我们每一次都是finish啊,我们点一下随便点一次,那我们现在看看,现在还有所谓的那个。
07:00
看一下啊,只有8y a ser,然后right任务还有呢,Clean clean clean啊就是这是一个提交了就没了啊。那都都都没有了。没有compassion相关的东西对不对啊,所以其实从那个呃,Web UI也可以看到啊,那接下来呢,咱们就执行这个啊,这个类啊,那架包呢,我放在立下面了,那表的路径我看一下啊,Who def four t7啊OK,没问题啊,我们截个图先啊。是这样对吧?啊,那接下来咱们就手动触发compassion。啊,那我在外头执行右边这个是什么,好在flink目录下面,我这个命令是。呃,相对路径嘛,对吧。然后第130好,呃,看了一下确认应该是没问题了。
08:06
好回车。呀,没有那个文件或目录什么鬼。哦,这边多了一个,多了一个啊,多了一个斜杠啊,应该是blink就可以了啊,因为我前面加了一个点啊点杠啊,那其实我多此一举好了回车那你看成功提交了。嗯,诶。我是不是又漏了什么东西?啊,这里有个空格,我的天呐啊,老是犯这种低级错误。啊,算了,我在这边改一下,你看那这个应该就没问题了吧,啊,我从这拷贝吧,脑子有一些格式问题老是漏啊。
09:07
那提交他会提交给谁呢?39823,那应该还是提交到咱们的,呃,这个里面去了。那么大家可以看到现在执行的是一个什么呢?Compassion任务啊。好,执行完了,其实已经对吧,这个compassion任务已经大家可以很明显的看到flink护compassion后面是一个commit time,或者说instant time,呃,已经finish了,接下来我们观察一下就DFS,诶发现确实生成了一个什么PA文件啊,咱们对比一下啊PA文件好,那这个就是咱们的一个使用方式,另外提醒一点,咱们现在是。执行一次,它执行完就结束了,那这种呢,需要我们去定时调度定时,那定时的话咱们可以选择用用什么呢?你用呃,Share尔自带的那个chome chome tab也可以啊,Chome tab也可以,或者呢,咱们可以用一些调度框架,比如说海豚调度啊,Dolphin schedule啊,让它定时跑啊,或者阿兹卡班啊之类的调度框架也可以,那这样做呢,是更加的节省资源啊,那如果无所谓的话,其实咱们可以单独用杠杠service。
10:28
对吧,开启一个常驻的进程,那也可以,那这样的话我们就不用去调度了呗,啊,他就隔一个周期啊。会去做啊行,这个是离线compassion。
我来说两句