00:00
如何去解决这个问题呢?啊,当数据现象发生的时候,对吧,解决那有三种。方式啊,两大类,哪两类呢,一类是迪拜前。一类是礼拜后。啊,做。好,那还有。KBY后。分普通聚合和窗口聚合,这两种操作方式可不一样。KPI之后,我们往往做KPI就是要做聚合,对吧?啊更多人做聚合啊,好,那做聚合的时候呢,一方面我们有可能要开窗聚合。另外有可能我不开窗直接做some,对吧?这两种都是有可能的,好,那我们先思考一个问题啊,呃,我们聊到KBY之前数据倾斜。那为什么在替代之前还会产生数据倾斜呢?
01:00
是什么原因导致的呢?大家想一下。在K败之,K败之后我们有可能知道对吧,K败之后比较好理解,因为K败呢,是按照这个K的哈希嘛,当然双重哈希也好,就反正就哈希对吧,容易造成数据倾斜,但是为什么K派之前也会这个数据倾斜呢?蒋总说了卡夫卡其他同学呢,怎么怎么认为的这个问题,哎,他是如何产生的?对吧,在K败之前。为什么还产生了数据倾斜呢?
02:09
对了。啊。卡夫卡分区,或者说原来的数据本身就怎么样啊。倾斜了是不是?好,那就什么意思呢,比方说。上油呢,三个冰度。或者四个吧,好下游呢,我对接卡普卡的时候,我用四个冰组来消费,对吧,一人一个是一个分区,好,然后接下来呢,Map Fla map,对吧,也是四个微动,因为没有做keep嘛,都一样的保持一致,对吧,像这种操作比较简单。啊,那如果说本身往那个卡卡分区里面写的时候就倾斜了。因为我们说了,上游如果往卡夫卡写的时候,是不是尽量的也要跟这个卡卡分区数保持一致,也就四个倍音都往外写的那一人写一个分区,是不是有可能写出去就倾斜了,那你消费过来倾斜了,到这儿一直都是倾斜的,对吧?那这就上游导致倾斜的,那最好的方式到上游去解决,怎么解决呢?
03:13
怎么解决呢?对吧,上游我怎么去解决这个。问题呢?卡发卡自定义分区器。那当然也可以啊,自定义分支器也可以。那你想想看啊,这是上游数据倾斜了。设置分配策略,对,那上游居然我们知道往卡布卡写的时候啊,它是由生产者往外写的,而生产者为什么会造成数据倾斜呢?
04:13
对吧,好,那可能是因为我们按照某个K去做分区了,对吧,那为了解决这个数据倾斜呢,我们可以很简单是不是啊。呃,要这个按照K去分区,也不要指定分区对吧,按照大的轮群就好了,还是从分区策略上考虑吧,上游解决那就好了啊,那如果上游不给解决呢?我当前消费过来了,数据倾斜的,我上游没有解决,我也不想解决了以前那个数据对吧?嗯,我下游我自己来解决能不能解决,我到了下游消费过来之后,我来解决能不能解决啊。
05:00
能不能?Shuffle。用沙好吗?我觉得沙不好,有比沙va更好的,沙va随机啊,沙va随机啊,那我肯定用re balance更好一点吧,对吧,我消费到了数据之后,我用rebance是不是更好一点,哎,向左一样,对吧,用reb,因为rebance轮询啊。对吧,沙粉随机啊,那肯定没有轮水来的好呀,对吧?好,这个第一个问题我们就解决了,KBY之前对吧?KBY之前啊,好,那这个里边呢,产生数据倾斜,也就是说要不然你对上游进行处理,上游如果不给处理对吧?好,那本身产生的本身就不均匀嘛,数据本身就不均匀,对吧,某些卡不卡的分区过大,某些比较少,那你最好在上游解决,如果上游解决不了的时候,对吧,我就是要按照这个什么K啊分区写出去,那怎么办呢?那我就下游我们可以用Sha re balanceance,当然re balance最好的对吧,Re balanceance是最好的啊,它随机也行,那这个呢,Re scale它是呃,这个区之区与区之间对吧?啊,它是它是全局的啊,它是范围的范围类型啊,全局类型,那肯定全局类型更好一点。
06:24
对吧,啊,全球人选更好一点啊好,这是我们所看到这样的一个东西啊,嗯,这是K之前的数据倾斜啊解决方案,要不然到上游处理,要不然呢,当前来处理的时候,我们就重分区对吧,重分区打散一下就好了啊。
我来说两句