【场景】大数据场景题 - Hash

之前介绍过 Bitmap 和 Bloom Filter,今天介绍 Hash。
【场景】大数据场景题 - Bitmap
【场景】大数据场景题 - Bloom Filter

适用范围:快速查找,将海量数据分成多个小文件,完成分布式处理。

基本原理:是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。

问题实例

(1)给定 a、b 两个文件,各存放 50 亿个 url,每个 url 各占 64 字节,内存限制是 4G,让你找出 a、b 文件共同的 url?

方案一:Hash

  • 预估文件大小:50E × 64 B ≈ 5G × 64 ≈ 320G,超过内存 4G,不能一次性读取。
  • 因此考虑分治。
  • 遍历文件 a,对每个 url 求 hashcode 再取余,即 hash(url) % 1000,将文件 a 分为 1000 个小文件,记为 a0, a1, …, a999。每个文件大小 320G ÷ 1000 ≈ 300M。
  • b 通上,得到 b0, b1, …, b999。
  • 由于采用相同的 hash 函数,所以 a 和 b 中相同的 url 都在编号相同的文件里面。即只需要对比 a0 vs b0, a1 vs b1 ,…, a999 vs b999。编号不同的文件不可能存在相同的 url。
  • 将 ai 的所有 url 放进 set,遍历 bi,看是否在 set 中。如果在,就是共同的 url。

方案二:Bloom Filter(注意会有一定的错误率)

  • 4G 内存大概可以表示 340 亿 bit。
  • 将其中一个文件中的 url 使用 Bloom filter 映射为这 340 亿 bit。
  • 然后挨个读取另外一个文件的 url,检查是否存在于 Bloom filter 中,如果是,那么该 url 应该是共同的 url。

(2)海量日志数据,提取出某日访问百度次数最多的那个 IP。

  • IP 的数目有限的,最多 2^32 个,所以可以考虑使用 hash 将 ip 直接存入内存,然后进行统计。
  • 采用 hash 的方法,比如模 1000,把整个大文件映射为 1000 个小文件,再找出每个小文中出现频率最大的 IP 及相应的频率。即 WordCount。
  • 然后再在这 1000 个出现次数最多的 IP 中,找出那个频率最大的 IP,即为所求。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据与人工智能-fy 大数据与人工智能-fy 1. 1Hadoop目前最新的版本是 [单选] A.1.0 B.2.0 C.3.0(正确答案) D.4.0 2. 2以下哪个系统可以为计算机CPU分配资源 [单选] A.分布式文件存储系统(HDFS) B.分布式计算框架(MapReduce) C.分布式资源调度系统(Yarn)(正确答案) D.数据处理方法(DPW) 3. 以下哪个组成不属于Yarn [单选] A.ResourceManager B.NodeManager C.ApplicationManager D.Spark(正确答案) 4. Hive针对内部表和外部表的区别是 [单选] A.创建内部表的同时,会将数据挪到数据仓库指定的位置(正确答案) B.删除内部表时只删除源数据 C.创建内部表时,只记录数据指定的路径 D.删除外部表时删除表中数据和源数据 大数据与人工智能-fy全文共22页,当前为第1页。 大数据与人工智能-fy全文共22页,当前为第1页。 5. 以下属于引入ZooKeeper的理由是 [单选] A.分布式系统需要统一管理(正确答案) B.MapReduce代码开发效率低下 C.使用SQL进行数据分析效率更高 D.大数据50%为报表类业务,需要仓库类大数据工具 6. 下列关于ZooKeeper集群原理的介绍,不正确的是 [单选] A.由多个ZooKeeper SEVER组成的集群环境 B.包含一个Leader和多个Follower C.每个sever保存一个数据副本、全局数据一致 D.不采用分布式读写机制(正确答案) 7. 以下关于Hbase的说法正确的是 [单选] A.Hbase是分布式场景中可以实时读写数据的分布式数据库(正确答案) B.包含一个Leader和多个Follower C.创建内部表时,只记录数据指定的路径 D.比较适合存储视频文件 8. 关于Redis说法不正确的是 [单选] A.Redis没有字段的概念,所以在数据查询上功能比较弱,支持的特性比较简单。这点是不如MongoDB的 B.Redis单个value的最大容量可达1GB,不支持单个Value比较大的情况 C.内存依赖比较高。由于Redis本质上是一个内存数据库,所以内存硬件的容量大小直接决定了Redis可用的数据库空间 D.比较适合存储视频文件(正确答案) 大数据与人工智能-fy全文共22页,当前为第2页。9. 关于Redis说法不正确的是 [单选] 大数据与人工智能-fy全文共22页,当前为第2页。 A.使用C语言编写(正确答案) B.比较适用于计数场景 C.所有数据都在内存中,高速读写 D.支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash哈希类型) 答案解析:使用开源C语言编写 10. 以下哪个不属于Redis三大架构 [单选] A.主从复制架构 B.Sentinel架构 C.集群架构 D.实时数据计算架构(正确答案) 11. 关于HDFS的说法不正确的是 [单选] A.是JAVA实现的、分布式的、可横向扩展的文件系统 B.支持数据切块,目的是提升文件的读取效率 C.数据切块后默认大小为256M(正确答案) D.有副本机制 答案解析:为128M 12. Yarn是从Hadoop的哪个版本出现的 [单选] A.1.0 B.2.0(正确答案) C.3.0 D.4.0 大数据与人工智能-fy全文共22页,当前为第3页。13. 下列哪项不属于引入Hive的原因 [单选] 大数据与人工智能-fy全文共22页,当前为第3页。 A.MapReduce代码开发效率低下 B.使用SQL进行数据分析效率更高 C.大数据50%为报表类业务,需要仓库类大数据工具 D.Hive更简单(正确答案) 14. 关于Hive和RDBMS说法不正确的是 [单选] A.Hive使用HQL查询语言 B.Hive使用HDFS进行数据存储 C.RDBS数据规模较大(正确答案) D.Hive硬件配置要求一般,RDBMS要求较高 答案解析:规模较小 15. 关于ZooKeeper的说法不正确是 [单选] A.采用层次化的数据结构 B.采用类似于LINUX命令进行数据访问 C.具备临时节点和永久节点 D.永久节点会随客户端会话的结束而结束其生命周期(正确答案) 答案解析:临时节点 16. 关于Hbase说法不正确的是 [单选] A.Table中包含多个region B.region会随着数据的增大而分裂 C.region分裂时,数据不能访问 D.行的一次读写不是原子操作(正确答案) 答案解析:是原子操作 大数据与人工智能-fy全文共22

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值