00:00
好,各位同学大家好,我们继续接下来为大家介绍red基数统计,一种新的数据类型hyper log log OK,那么首先啊,老规矩也是一个新的知识点,这个东东怎么出现的,解决哪些问题呢?来,同学们,我们先来看这么一个需求,先看我们的工作和业务需求,我们要求就一个。统计某个网站,尤其是一些京东天猫淘宝啊,包括我们上硅谷啊,我们自己主页网站的UV,统计某个文章被阅读的UV,那么首先我们这儿就要来给大家解释一下什么是UV啊,那么同学们请看。是独立访客,一般理解为客户端IP,那意思就是比如说这是一个天猫现在。你们这个网站牛不牛好不好,天猫淘宝京东,那么请问你们每一天啊,有多少人打开,比如说淘宝点com,那么大家都清楚这个流量是上亿的,对吧,那下面啊,我们想统计一下。
01:10
大致每天有多少人登录浏览过我们这个网站,一句话叫什么独立访客,那这个时候我们的主页。不排除有些人在刷单。那么好。这是一个首页,我现在进来访问了,那以杨哥所在的地方,我IP是同一个,我今天登了十次,但是注意都代表我一个人来登录,那么这样的话,我十次只能算作什么?一次登录,一个人登录,所以说我们有一种大规模的繁殖,可以这么说,作弊啊,需要去重复统计独立访客,那么比如啊,现在同样的IP就认为是同一个客户,那么这样的话,我们就不算做统计数据之内,对吧,你一个人假设今天好就访问了一次。
02:15
那么你今天下午又访问了一次,今天晚上又访问了一次,那么我们认为你这个独立访客。如果是页面你登录了三次,但是独立的访客具体到这个人还是同一个,所以我们这儿就有一种东西叫什么去虫考虑OK,那么这个UV就是指独立访客。那么下面除了统计某个网站主页的UV,还要用户搜索网站关键词的数量。我们现在呢,假设我搜一个Java,一个人搜了一次,好,我们作为真实,那假设还是这个IP又去搜Java,我们说这个Java今天就被搜了两次,没必要这样有太多重复的注水的数据,根本不精确。所以呢,对于网站的UV,用户搜索网站关键词的数量,统计用户每天搜索的不同词条的个数等等等等这样大规模的统计,首先又要回到类似于我们上一讲bit map同样的问题。
03:13
第一个大家都清楚。像什么淘宝啊,天猫啊,京东这样的首页,每一天它的UV大概是亿级的,上亿人会去访问淘宝,那我们又要回到我们刚才碰到那个问题,不要占太多的内存。既要又要还要对吧,那这个时候,那么同学们我们来看看。我们自然而然就需要有这种诉求,与之对应的一种数据结构主次给我们提供了去重复统计功能的基数估计算法,就是hyper log log OK,好,那么同学们,我们可以看一下我们的网址,Hyper log log,它的主页介绍就在这,那么它有一个什么样的优点?它又有什么样的缺点?首先请看我们的定义啊。
04:02
还lolo是2.8.9版本就有了,它主要用来做基数统计的算法。那么何为奇数?这是第一个问题,这个细节待会我们说,我们先来研究这个整体。它的优点就是在输入元素的数量或者体积非常非常大,我们强调过了,淘宝点。com每天的访问量是一级的,那么这个计算基数所需要的空间就是固定的,并且很小。比如说今天就有一个人。不同的人访问了淘宝,那么你就给我访问这个数量就是1亿,而不是要存这1亿条,记录这1亿条数据,所以在red里面,每个hi log log的键只需要花费大概多少,12KB的内存就可以存二的六十四次方个不同的元素,32次方是不是就接接近40G了,那么六十四次方那就更多,那么所以说这个计算奇数的时候,元素越多越耗费内存,越多的集合就会形成鲜明的对比,所以呢,切记这啊。
05:00
Lolo只会根据输入元素来进行什么激素统计,注意待会会说什么是激素。第二个它不会存储元素,本身就告诉你今天天猫的访问量是1亿,而不是存了1亿条记录,一定要理解这个意思,OK,所以还log log不能像集合那样返回输入的各个元素,我不是让你返回1亿条元素,1亿条记录,那么这是第一个。第二个我们来看何为奇素,是一种数据集,什么东东去重复后的真实个数,那比如说杨哥的IP,今天登录了三次淘宝,同一个IP我们只能算一个,那么大家来看一下这个案例,首先这是全集,二四六八七十七,39,比如说这些就是一些数字用户ID或者是什么我们的IP地址,四号用户。四号用户,八号用户,八号用户是不是有两个八,那么去重复以后,这个激素就是全局里面我们来做了一下筛查和筛选,这个激素去重以后就是七,那么嗨派log log就会认为你有这么多人登录了首页,但是真真正正去重掉以后的激素统计多少就是七,OK,好,那么我们的基数统计就是。
06:13
用于统计一个中一个集合当中不重复的元素个数,就是对集合去重后剩余元素的计算。一句话,它是去重脱水后的真实数据。好,我们明白了,所谓的激素就是去虫。第二个问题,Log log它会有一个缺点,大家请看官网上是这么说的。对于red logo实现的话呢,大概只需要占用12KB就OK了,但是它提供一个标准的误差范围在多少0.81,比如它可能啊在驱虫。的过程当中会有一些误差,但是比如说啊,你今天有100002000万人来反问,还是1亿多少多少个别的一个差距,有0.81的这么一个标准的误差是可以接受的,OK,所以log log它主要是什么?基数统计,那么来同学们老规矩。
07:11
接下来我们来看一下hyper log log的基本常用操作和命令,那么有PAD添加指定元素到hyper log log当中,可以是用户编号,可以是IP地址,一般我们来做这种大规模的大数据的统计,基本上填的是IP,第二个返回给定hiper log的奇数估计值,那说白了就是去重以后奇数统注意什么值啊,奇数估计值啊,最后。合并,将多个hi log log合并为同一个,好,那么同学们请看啊,这就是我们最后的目的,Key最后呢,是我们的合并的值,S1S2就三个来,大致我给大家讲解一下,请看PFA。一。假设用户编号或者IP地址,那么134579,第二个log log2这个K2444,大家请看我这是不是有重复的六九呃689,那么来PF cant PF can什么意思啊,基数,那么大家请看,对于hy log logo2上面这个一是代表true操作成功,但是1234567,那么去掉重复以后。
08:18
只承认几个,只承认五个,OK,天生驱虫有点像我们的哈ET来下面篇me,那么下面就是一个整合,把一跟二合并到一块,那么这个这个时候是不是两个结果集的混合,那比如说今天是第一天的首页的反问有哪些IP,今天这个是什么?第二天的,那么把它们两个合起来是不是就是连续两天的总和?那么最终告诉你去重以后真真正正的有效IP几个只是九个?好,那么同学们,我们简单的呢,来给同学们做一下演示,那么PF a DD hiper log log,那么零一,大家请看13579没问题吧,PF k gd hyper log log,零二。
09:05
124444,然后五,然后九,然后十,兄弟们没问题吧,两个添加成功,PF cant log log0,一,那大家请看13579没有重复的它。很精准,那么这个时候多少五来那么嗨,Log log2,那么大家请看有没有重复的100%有,那么这个时候是123。456OK,那么好PF,那么这个是我们一个统计,那么merge,假设我这个还log result,那么下面统计谁呀?Hyper log log 07hyper log多少零二来一混合,那么现在是不是hyper log log result,那么再来PF,看它你这个全部的数据结合了以后大概是多少?只有八个元素我认为是OK的,那么。
10:06
12345。没有67OK 90,那么最终数字就是8OK,再次强调,它不是给你记录了。八个具体的记录是告诉你一个去重后的基数统计值啊,就是八,OK,好,那么这个就是我们害怕log log相关的一个基本命令。相关的讲解,那么对于在这儿,那么可能同学说我怎么把它用到上面呢?比如说杨哥来个科技和很活,你给我统计一下天猫网站首页一级UV的red统计方案,你能不能做一下,那么同学们不要错过小白篇,只讲一下他哈,Log log它就是一个去虫的基数统计的。功能,一些基本操作命令真真正正到后面,那么同学们对于这些高级部分,那么来吧,我们下半场才会和同学们讲一下这些原理。
11:04
比如说uvpv dau AU,那么跟你跟产品经理沟通的话,这些话你是要懂的,那么这些需求对吧,那么来他是怎么做到,你刚刚说的什么12KB怎么演化来的,它有误差,什么牺牲准确率,0.81左右,这些是怎么来的,我们放在高级篇再给同学们进行详细的讲解,OK,那么同学们千万坚持到最后跟着来,那么我把它分成两场,上半场就是学个入门篇,你就知道激素去重统计基本命令,下半场高阶篇咱们在代码说话,好,那么同学们在小白篇哈拍log log的介绍就给大家说到这。
我来说两句