温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
那个叫什么来着,叫难上加难的。满身大汗。可以。Combine in distinct,大家知道咱们have经常最怕一个什么操作啊,哎,对,它默认是不是也走一个reduce啊,对吧,如果你是一张分区表,你不过滤分区又做了这个事,那数据量一大,它直接就崩了啊,OM了啊这那的。如果你是have Spark,是不是连Spark都被你干崩了?对吧。那那么在这里呢,首先我们来聊一聊这个东西。呃,克里卡house底层跑它用的是什么?它不是用count去跑的,它用的是另外一个函数,也是unique那个系列的一个函数,它叫精准去重来,我给大家看一眼,看一下它的一个执行优化语句啊,也是prime sys。
01:17
好,穿过来。就是这个U亏,这是不是抽取的意思啊。他会用这个来跑。那这个跟另外一个有什么区别呢?这个是近似去重近似,也就是说我不保证百分百的准确率,但是我快。当然不是说他只有50%啊,那谁敢用啊,那用跟没用一样啊,基本上你可以近似认为它比较靠谱,如果你要追求完全精确,效率无所谓,那你就。正常写就行了,它顶上反正用的是用那个是吧。
02:04
那我们来试一下效率呗,先来跑一个普通的count,精准去重。用了0.493秒,玉王虫剩886万口。那胖然,咱们是对谁去种啊雌激素吗?我我这张表是870万行啊啊多少条880万呢。那每一行是不是产生一个随机数啊,那么在这880万个随机数里边有886万啊,887元来对吧。好,那我们再来另一个看一下效率啊。这是近似驱虫数,数值不用关注了呗。那我再执行一遍是不是又不一样了,但你这样没法确定它到底准不准啊,对吧,那我来一个,我改一下U了ID,我不对这个随机数去重了,因为这个值你也不知道它准不准,我对URID去重可以吧?好,你看119862,那同样另一个count distinct,我也改一下U了ID,看它准不准了。
03:26
准吗?少了一点吧。少了一点,你不相信,然后再来一遍。这个再来一遍,你发现他就是这样子,这其实有点像什么呢?呃呃,对,有点像布隆,布隆大家在弗link的时候是不是介绍过,对吧,它是有一些误差率的。那么你想想,比如说你们要算一个UV。
04:02
那你觉得一定要非常精确嘛,假设你的UV是100万,然后你算出来是999987。跟九千九百九九九九这个,比如说这个是精确这个近似的,那么对于你而言,这个指标而言是不是无所谓啊。对吧,像这种场景你就求快就行了,但是如果你是金融类的指标,跟钱相关的,你是不是一分。都不能差呀,最好了,那你就只能精确精确。那其他场景大部分咱们可以用这个combine这种方式来做啊。
我来说两句