00:00
除了compassion可以离线之外,咱们这个。也可以做一个离线,那这个其实咱们前面讲的就是合并小文件啊,其实啊,咱们前面一直都没有开启,对吧?啊,都是通过它自身的文件大小控制啊来进行的,那么。那一般呢,也是建议离线来执行啊,就不要在线去跑了啊,那异步的卡luster任务相对于在线的这种资源隔离。啊,他做的资源隔离线,从而更加稳定,其实这个跟离线compassion一个道理啊,道理是一模一样的,那它同样的参数也有两个,第一个主要参数啊,前面也看过,第一个为一个开关,我们一般是false表示关闭在线的一个classroom。那么它的它也有一个调度计划生成阶段啊,我们建议仍然保持一个开启啊,那么使用的方式也一模一样啊,执行一个工具类,然后呢,指定价包指定表明啊,那它的参数就更像了,你看这个pass表明啊,然后帕克是一个并发啊,那就是它的并发默认是带。
01:10
呃。Yeah。带压缩啊,这个描述有点不对啊。嗯,也算吧,啊,待合并吧,好吧,那么schedule也是一样,这是一个执行计划阶段,那么也是一样,有丢失查询数据的风险,跟comparison基本一样啊,那这个同样呢,有一个,呃。有一个顺序的问题,但是它跟compassion不一样,Compassion是从最新也就最靠近现在的啊去执行,但是class也是从最老的啊,就最远的啊,过去最久的那那那边那些文件开始执行一个压缩任务啊,那么还有呢,它有一些特有的参数啊,就咱们合并的话,合并小文件怎么个合并法,第一个呢是合并完之后达到多大,默认是一个G啊,最大是一个G,那么什么样的小四小文件要被合并呢?小于600兆。
02:11
啊,小于600兆,那还有可以指定排序列啊,还可以呢,作为一个长度进程,跟compaion一样啊,长度进程的时候一个最小的执行间隔,好吧,那接下来我们快速的体验一下啊,那我建一张表T8,呃,那有一个分区字段age,那么这边我要提醒大家的是,呃,你要做cluster,那必须是一张分区表,否则会报空指针的异常,那其实这个在源码当中我也翻了一下啊啊,因为之前我遇到过这个问题,就是这个工具类啊,这个类里面的main方法啊,在这一行的时候啊,它会去将一些配置啊绊信息烟V啊都封装起来,那点进来之后再往下一百八十五行的位置,它这边会去设置分区字段,那么如果你没有分区字段的话,它直接就是报一个空指针异常啊,这边是要提醒。
03:11
大家的一点啊,行,那我们建这张表用age来分区,然后呢,我是将这个在线clustering给关了啊,调度呢还是开启了,呃,那我们用的是Co表,因为呢这个小文件问题,主要还是要处理PU回的表,因为呢Mo表我们前面也聊了,它是不是自己有会会做一个追加的方式啊,对吧?啊,本身对文件大小管理还比较好啊,主要是pack好,那我们就多次插入,诶都是18这个分区的啊,因为我A级是第二个字段。然后应该是每插入一次都会生成一个新的PA,那这样的话它的大小就都不一样了,对不对啊。来,那么接下来我们来试一下吧。
04:02
好,So tables。那就insert into啊T啊,我自己拷贝吧啊。先插一条啊。拆了之后,咱们来观察一下它的。Di catalog default t8哎,18这个分区啊,里边现在有一个趴的文件的,对吧?啊,424K,那再插一条。好,再来观察一下。又有一个新的生成了啊,424K39。嗯,那么再来呗。都是400多K的话,咱们能不能一下子给他大一点的。
05:10
这个又又多了一点点对吧?啊,那么再插两次吧。好,那这目前有五这么五个啊,咱们截个图放这边,那么接下来就直接执行这个离线class。那这个表路径是T8对吧,没问题,那那些文件大小限制,我就默认的就好了,好回车。那提交我们看一下这个任务啊。
06:03
好,提交上去了。诶啊,已经应该已经完事了,那么大家可以看一下这个地方是不是有一个。呃。Whodi class的任务对不对啊,然后进来之后我们看一下它这个很简单啊,就呃,它只有一个并行度,是为什么呢?是带合并的分区啊,我们只有一个分区,也就是说它每个分区会起一个task,这是它默认的并行度啊,那接下来你看我们的数据,诶,只有一条吗?哎。发送和接收都只有一条,那行,我们观察一下这里的变化啊,对比一下刷。诶,你看原先是不是这么几个文件,原先是这么几个文件。对吧,那我们执行完之后,我们一共插了五次嘛,执行完之后它合并出了一个新的较大的文件,但是我们可以发现老的这些并没有伤啊,那这一些老的由谁来清理呢?由克na来清理啊,根据咱们的策略,他会将它清理掉啊。
07:15
那看一下,其实这个大小也没多大啊,也就是稍微大了一丢丢啊,感觉也没多大啊。因为我们数据量比较少嘛,所以你看不出很明显的效果。一共也就是五条啊,五条你能能怎么合并呢,对不对。好,这是我们简单的一个演示啊。
我来说两句