00:01
各位同学大家好,刚才呢给大家介绍到了read中的bit maps这么一个注意类型,那下面呢,我们再来介绍red中的另外一个新数据类型,这个类型叫hyper log log类型,那这个类型呢,它主要是做什么的呢?下面给大家做个介绍。然后大家看一下我课件中写到的,就是我们在现实中的经常遇到这么一个功能,统计网站,这个就是PV的这么一个操作,就是页面的访问量,那这个操作呢,其实咱们可以轻松用这个ready中这个英可瑞,包括D可瑞轻松实现。但是如果说你想统计一个叫UV,比如说你的独立访客,独立IP搜索记录等等,这个时候就需要做各种这个统计,包括去重,包括等等操作,比如说我现在一个用户,同一个用户访问网站多次,咱是不是记录一次,同一个IP在某一个时段中访问网站多次,我们也是只记录一次,那这些操作呢,就要引的集合,不能有重复元素,而这些问题成为什么?它叫做基数问题。
01:12
那什么叫基数问题呢?大家看一下啊下面。有这么一个地方,比如我现在啊,数据集中有1357578这么多值,那这个数据集中的基数是谁呢?就是13578,它里边就是除物元素,给它叫变成一个,最终它的基数就是五,这个叫奇数,而奇数问题呢,在我们现实中有很多的解决方案,首先第一个方案在我们的MYSO中,咱可以用这个叫distinct去重嘛,加上count来计算出你不重复的个数,在RA里边可以用哈希set或者说be Ms都可以处理,但两种方案虽然能处理。他们都有一个问题,什么问题呢?随着你数据量的不断增加,会导致占用空间越来越大,所以这个时候呢,对于一些比较大的数据集是特别不合适的。所以咱们这里边有一种新的方案,就是咱们现在rise中提供一个新类型叫hyper log log,而这个类型是干什么的?是用来做这个基数统计的一种算法,它的优点是什么呢?我们在输入元素数量或者体积非常大的时候呢,它只计算你的基数所需的空间,而这空间总是固定的,并且是很少的值,也是它用最少的空间计算出你更多的值,这是它一个最大优势。而这个hyper log log只需要花费12K的这个内存。
02:46
就能计算出二的六十四次方不同元素的技术,所以它的功能是极其强大的,而这样的话,它可以耗费很少的内存而计算出更多的这个数据。所以咱们现在讲的这个东西就叫做help log log大家把它知道基数刚才也提到了,就是里边不重复元素,比如这里边不重元素有五个,那它基础就是五。
03:13
咱通过help log log就可以方便做这操作,这是我们对这个类型的一个介绍,是read中出现的一个新的一个类型,它主要用于里边做这个基数的这个计算的操作。那这个怎么去用呢?给大家演示一下啊,这个很简单,首先里边第一个命令,那就是添加叫PFA的,通过它往里边加入你的元素,就加入这个help log log中去,那下面给大家来加一下啊,我们叫PFA。然后里边加上你的key,比如这个key呢,我给它起个名字啊,这个名字比如我就叫这个啊,就按照啊,我这里边写下,比如起个名字,我们就叫这个就是program。
04:03
就是一个编程圆program,然后里边我加上它的值,比如说我们加上第一个,咱就来一个Java,这样的话呢,就往里边加入一个内容,比如说我再加第二个,第二个呢,我加入一个叫PP,然后第三个,比如说我现在啊再加入一个还是一个Java,你注意啊,按照咱的基数问题,如果你重复的话,是不是能做到去除了,所以大家看到第一个是一,第二个是一,第三是不是零了,因为这零跟之前已经重复了,而你在加的时候也可以加多个,就再加一个,我写一下,比如说我加一个第一个,我们来一个。C加加。第二个来个买circle,你也支持,就是加多个,这样的话呢,咱通过PFA的可以向这个类型中加入我们的数据,然后加入数据之后这里写到如果说它成功一不成功,那就是零,然后通过另一个命例叫PF count,能统计出里边这个就是基数这个数量,那下面我们就来统计一下。
05:08
给大家写下。比如咱来一个PF count。然后里面加这个。然后大家看里边的数量是不是有四个啊,就是里边我们刚才加入这些值,包括你加入Java PHP,加加买sole,一共加了这么多内容,最终白纸就是四,就是你的这个数量。这是我们提到的啊,比如这里边这么看呢,可能不是特别明显,比如先给它先给它flash一下啊,咱重新加一下PF。Ad,我们加一个百色,然后比如说。呃,这样啊,我加一个元素,因为这么看更明显啊。我重新加一下,我这就直接写啊PA,比如我们叫这个program。我们第一个值,我就叫这个。
06:01
Java这是加的第一个,然后加入之后呢,我们用PF count加上一个program。大家看它的值是不是一啊,比如现在我再加第二个,第二个呢,我来一个这个C加加,然后咱们用这个PF count再做查看这个值是不是二啊,比如现在我再加一个Java,然后咱用PL count给他看一下,大家看是不是还是二啊,它就把那个重物元素没有再给添加,因为它是进行这个基础的操作,这是我们说的这么一个PF抗的这个命令,然后除了它之外,下面还有第三命令叫PF measure,就是把你那种做一个合并。那合并什么意思呢?给大家演示一下啊,比如我现在做个操作。我目前有这个program,那比如再加一个TAD,比如我就叫这个K1,咱们加入值,比如这个值啊,我就来一个A。我再来一个p FA DD ke1,再加入一个B,目前加了两值,然后咱们用p count加入K1里边是不是两个值啊,比如现在啊,我想把这个program和K1做个合并,然后加入到另外一个里面去加这个就什么P2或者P3里边去用这个叫PF measure做实现。
07:27
那这里边。给大家演示一下。PF me,比如我们加了这个叫K。100里边。然后咱们把这个K1和program。给它直接加进去,咱们回车,回车之后我用PF count看这个K100,然后大家看里边是不是有四个这个数量,因为咱们的program中是两个,K中是两个,把这两横到一起加到K100中,最终里边是不是有四个,这是一个叫major合并的操作。
08:05
所以咱们到这里呢,就把第二个新数据类型给大家,就也是完成了,这个叫hyper log log主要用于解决基数问题的,就是你做这个基数操作的,它里边可以帮我们做到去虫,刚才咱们演示了添加。统计数量包括合并的三个操作。
我来说两句