jjzjj

hyperloglog

全部标签

hadoop - MapReduce 上的 HyperLogLog 正确性

关于HyperLogLog算法一直困扰我的一点是它对key散列的依赖。我遇到的问题是,这篇论文似乎假设我们在每个分区上都有一个完全随机的数据分布,但是在它经常使用的上下文中(MapReduce风格的作业),东西通常是按它们的哈希值分布的,所以所有重复的键都会在同一个分区上。对我来说,这意味着我们实际上应该添加HyperLogLog生成的基数,而不是使用某种平均技术(在我们通过散列与HyperLogLog散列相同的东西来分区的情况下)。所以我的问题是:这是HyperLogLog的真正问题还是我没有足够详细地阅读论文 最佳答案 如果您对

node.js - 使用 Redis 和 MongoDB (HyperLogLog) 计算唯一值

我在MongoDB中有一个集合,其中包含一个示例文档,如下所示-{"_id":ObjectId("58114e5e43d6420b7db4e15c"),"browser":"Chrome","name":"hyades","country":"in","day":"16-10-21","ip":"0.0.0.0","class":"A123"}问题陈述我应该能够在获取不同数量的IP的同时对任何字段进行分组。聚合查询——[{$group:{_id:'$class',ip_arr:{$addToSet:'$ip'}}},{$project:{class:'$_id.class',ip:{$

java - HyperLoglog Spring 按键操作

我有以下代码片段来测试我是否可以在Redis中添加HLL值,这个测试通过了,但是当我从redis命令行验证它时,我没有看到“HLLTEST”键,而是我发现了奇怪的键您可以从以下输出中看到。HyperLogLogOperations的使用有问题吗,@TestpublicvoidwhenHllRecord_thenCount()throwsException{hyperLogLogOperations=redisTemplate.opsForHyperLogLog();hyperLogLogOperations.add("HLLTEST:1010",1);hyperLogLogOperat

redis - 关于 HyperLogLog,前导零是什么?

我正在阅读antirez.com和维基百科以及其他一些资源以了解HLL是什么以及它是如何工作的,但每次使用术语“LeadingZeroes”时我都会犯错。当我们谈论HyperLogLog时,请解释它的含义。 最佳答案 前导零是散列的二进制表示中第一个1之前的0的数量。它相当于计算mostsignificantbit.HyperLogLog算法并不真正依赖于计算这些前导零,它只需要检查哈希的二进制表示中的已知前缀。碰巧在大多数硬件实现上计算最高有效位的速度很快。 关于redis-关于Hyp

database - 确定大型 redis 数据库中未使用键的百分比

我有一个Redis数据库,里面有数百万个键。随着时间的推移,我写入和读取的key发生了变化,因此有许多key我不再使用了。大多数也没有任何类型的TTL。我想了解Redis数据库中有多少百分比的键不再使用。我在想我可以使用hyperloglog来估计正在写入的键数的基数,但是为每个被写入和读取的键做一个PFADD似乎需要很多工作从。明确地说,我还不想删除任何东西,我只是想对数据库中使用的键数做一些分析。 最佳答案 我将从scan命令开始遍历键,然后在每个键上使用objectidletime命令来收集自上次使用键以来的秒数用过的。从那里

database - 有什么有效的方法可以减少 HyperLogLog ( redis ) 中的错误?

在redis中,我们将hyperLogLog设置为不同的元素。众所周知,对于每个key,HLL仅消耗12kb内存并产生标准误差为0.81%的近似值因为我有太多要计算的元素。所以在这里我想通过将元素存储到多个hll键中来降低错误发生率(例如"hll_key_%d"%(Elementmod1024))这实际上是降低错误的有效方法吗?或者其他什么方式实现? 最佳答案 这取决于。如果插入元素的数量明显大于Redis实现中的寄存器数量(2^14),则可以假设HyperLogLogs的错误呈正态分布。如果元素被平均分片到多个HyperLogLo

redis - Redis : Bloom filters or HyperLogLog data structure 之上的 URL 过滤

我想在Redis数据库之上为分布式爬虫系统实现URL过滤(例如,不要访问同一个URL两次,所以我需要以某种方式以最小的内存指纹来跟踪所有这些,没有必要要存储完整的URL,只需检查是否访问过某些特定的URL)。Bloom过滤器在这种情况下听起来不错,我看到了一个用于Redis的本地模块来实现Bloom过滤器。但它也有内置的HyperLogLog数据结构,所以我想知道在我的场景中哪个是更好的选择。 最佳答案 布隆过滤器与HyperLogLog完全不同。布隆过滤器用于检查是否有重复项,而HyperLogLog用于不同的计数。在您的情况下,

Redis Hyperlog 日志限制

我正在尝试使用RedisHyperloglog以一种hacky的方式解决问题,但我想了解的是Hyperloglog对数据或分布的限制和假设。count-min和bloom过滤器有它们自己的一套限制,但谷歌并没有提供太多关于Hyperloglog的应用和限制的信息。我正在使用RedisHyperloglog作为Antirez描述了我们可以计数的集合的基数没有实际限制。但是从理论的角度来看,Hyperloglog是否对数据或分布做出任何假设/约束? 最佳答案 HyperLogLog算法假定使用了强大的通用哈希函数。Redis使用Murm

三分钟了解Redis HyperLogLog 数据结构

文章目录0.前言1.原理1.2原理解析2.实战案例3.Redis从入门到精通系列文章4.常见问题4.1.什么是RedisHyperLogLog?4.2.HyperLogLog算法的核心思想是什么?4.3.HyperLogLog算法的误差率如何控制?4.4.HyperLogLog算法的存储空间大小与误差率的关系是怎样的?4.5.HyperLogLog算法在Redis中如何实现?4.6.HyperLogLog算法有什么应用场景?4.7.HyperLogLog算法的优缺点是什么?4.8.RedisHyperLogLog与BloomFilter有什么区别?4.9.RedisHyperLogLog如何处

azure - 如何将 hyperloglog 键迁移到 azure redis

我正在尝试使用MIGRATE将redishyperloglogkey从一台服务器迁移到azureredis服务命令,但据我所知MIGRATEdoesn'tsupportmovingkeytoaredisserverwhichrequiresauthentication.我该如何迁移hyperlologkey? 最佳答案 您可以在任何客户端上对其进行编码,HyperLogLog只是一个字符串。您可能可以在源服务器上获取字符串并在目标服务器上设置。x=Server1.StringGet(key);Server2.StringSet(ke