大数据领域常用算法总结

博客围绕大数据处理展开,指出处理海量数据可从时间和空间两方面优化。介绍了hash映射、bitmap、Trie树等算法和数据结构,还提及数据库索引、倒排索引、外排序等技术,以及simhash算法、MD5算法和MapReduce架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01 概述

    大数据必然涉及海量数据,所谓海量数据,就是数据量太大,要么在短时间内无法计算出结果,要么因为数据太大无法一次性装入内存。

    针对时间,我们可以使用巧妙的算法搭配合适的数据结构,如bitmap/堆/trie树等进行优化。

    针对空间,就一个办法,大而化小,分而治之,常采用hash映射等方法。

02 hash映射

    这里的hash映射是指通过一种哈希算法,将海量数据均匀分布在对应的内存或更小的文件中,这是一种分而治之的实现思想。

    使用Hash映射有个最重要的特点是: Hash值相同的两个串不一定一样,但是两个一样的字符串hash值一定相等(如果不相等会存在严重安全问题,比如两个人的账号信息经过哈希后映射到同一个值)。

    如下所示:

    在使用hash映射的时候,选择合适高效的Hash函数是关键,选择的不好不仅浪费空间,而且效率不高,存在冲突的可能性较大。当出现冲突的时候,还需要借助各种冲突检测方法去解决。

03 bitmap

    用1个(或几个)bit位来标记某个元素对应的value(如果是1bitmap,就只能是元素是否存在;如果是x-bitmap,还可以是元素出现的次数等信息)。使用bit位来存储信息,在需要的存储空间方面可以大大节省。

    应用场景有:

    1、排序(如果是1-bitmap,就只能对无重复的数排序)

    2、判断某个元素是否存在

    例如,某文件中有若干8位数字的电话号码,要求统计一共有多少个不同的电话号码?

    分析:8位最多99 999 999, 如果1Byte(8bit)表示1个号码是否存在,需要99999999Byte=99999999/1024KB=99999999/1024/1024MB≈95MB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值