HyperLogLog参考下面这篇blog, http://blog.codinglabs.org/articles/algorithms-for-cardinality-estimation-part-iv.html 为何LLC在基数不大的时候会误差比较大? 直观上,由于基数不大时,会有很多空桶,而最终结果是求平均值,这个值对离群值(这里的0)非常敏感 那么重理论上看,为何误差比较大? LLC的渐近标准误差为 ,看上去只是和桶数m有关,为何还和基数大小有关? 关键就是理解渐近标准误差, 标准误…
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有一些 也可以划归到计算机视觉中去.这都不重要,只要知道有这么个方法,能为自己 所用,或者从中得到灵感,这就够了. 8. Edge Detection 边缘检测也是图像处理中的一个基本任务.传统的边缘检测方法有基于梯度 算子,尤其是 Sobel 算子,以及经典的 Canny 边缘检测.到现在,Cann…
近几年,业内对并行和并发积累了丰富的经验.有了较深刻的理解.但之前积累的大量教材,在当今的软硬件体系下.反而都成了负面教材.所以,有必要加强宣传,翻新大家的认知. 首先.天地倒悬,结论先行:当你须要并行时,优先考虑不须要线程间共享数据的设计,其次考虑共享Immutable的数据.最糟情况是共享Mutable数据.这个最糟选择.意味着最差的性能,最复杂啰嗦的代码逻辑,最easy出现难于重现的bug,以及不能測试预防的死锁可能性.在代码实现上.优先考虑高抽象级别的并行库(如C++11的future.…
在数据库中,常常会有Distinct Count的操作,比如,查看每一选修课程的人数: select course, count(distinct sid) from stu_table group by course; Hive 在大数据场景下,报表很重要一项是UV(Unique Visitor)统计,即某时间段内用户人数.例如,查看一周内app的用户分布情况,Hive中写HiveQL实现: select app, count(distinct uid) as uv from log_tabl…
Awesome Big Data A curated list of awesome big data frameworks, resources and other awesomeness. Inspired byawesome-php, awesome-python, awesome-ruby, hadoopecosystemtable & big-data. Your contributions are always welcome! Awesome Big Data Frameworks…
https://github.com/onurakpolat/awesome-bigdata A curated list of awesome big data frameworks, resources and other awesomeness. Inspired by awesome-php, awesome-python, awesome-ruby, hadoopecosystemtable & big-data. Your contributions are always welco…
一.HyperLogLog HyperLogLog是用来做基数统计的. 其可以非常省内存的去统计各种计数,比如注册ip数.每日访问IP数.页面实时UV(PV肯定字符串就搞定了).在线用户数等在对准确性不是很重要的应用场景. HyperLogLog的优点是: 在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的.并且是很小的, HyperLogLog的缺点: 它是估计基数的算法,所以会有一定误差0.81%. 每个HyperLogLog键只需要花费12KB内存,就可以计算接近264个不…
读过<编程珠玑>(<Programming Pearls>)的人应该还对开篇的Case记忆犹新,大概的场景是: 作者的一位在电话公司工作的朋友想要统计一段时间内不同的电话号码的个数,电话号码的数量很大,当时的内存很小,所以不能把所有的电话号码全部放到内存来去重统计,他的朋友很苦恼. 作者聪明的想到了用bit数组来解决问题,每个电话号码可以映射为bit数组的index,bit数组初始状态所有位为0,所有电话号码逐一处理:将bit数组对应位置为1,处理完之后统计bit数组中有多少个1即…
数据量一大,连统计基数也成了一个麻烦事.在使用kylin的时候,遇到对度量值进行基数统计,使用的是Hyperloglog算法,占用内存小,误差小,实乃不错的方法,但查阅网上的资料与内容,感觉未能理解的太明白.经过一番折腾,自己给整理出一个版本出来. 算法的论文是<HyperLogLog the analysis of a near-optimal cardinality estimation algorithm>,可以在谷歌学术上下载下来看看.具体论文的理论推导不详细介绍,简述下其思想核心.…
一.HyperLogLog 简介 HyperLogLog 是最早由 Flajolet 及其同事在 2007 年提出的一种 估算基数的近似最优算法.但跟原版论文不同的是,好像很多书包括 Redis 作者都把它称为一种 新的数据结构(new datastruct) (算法实现确实需要一种特定的数据结构来实现). 关于基数统计 基数统计(Cardinality Counting) 通常是用来统计一个集合中不重复的元素个数. 思考这样的一个场景: 如果你负责开发维护一个大型的网站,有一天老板找产品经理要…