海量数据处理常用数据结构及方法

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

大数据时代,海量数据的分析也成为了各大公司面试的热点问题。本文总结了几种常用的方法。

 

数据结构

 

bitmap

 

适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下
基本原理及要点:使用bit数组来表示某些元素是否存在;判重一般采用2-bitmap,即采用两个bit位来表示一个数据出现的次数(00表示未出现、01表示出现一次、10表示出现两次及其以上)

 

 

这里的堆不是我们提到的堆栈里的堆,而是用来排序的堆。

适用范围:海量数据前n大,并且n比较小,堆可以放入内存
基本原理及要点:最大堆求前n小,最小堆求前n大。维护一个拥有n个节点的堆,依次遍历剩下的元素,与堆顶元素比较,适当的时候替换堆顶元素,并调整堆。另外双堆可以用来维护中位数。

 

trie树

 

适用范围:数据量大,重复多,但是数据种类小可以放入内存
基本原理及要点:节点孩子的表示方式

 

hash

 

适用范围:快速查找、删除的基本数据结构,通常需要总数据量可以放入内存
基本原理及要点:hash函数选择,针对字符串、整数、排列等具体相应的hash方法;hash冲突的解决方式。

 

其他方法

 

分而治之

 

适用范围:几乎可用于所有的问题,经常用于不能一次读入内存的数据分析
基本原理及要点:如何分,一般都会用hash将大量的文件分成若干小部分,其思想实现为MapReduce

 

双层桶划分

适用范围:第k大,中位数,不重复或重复的数字
基本原理及要点:因为元素范围很大,不能利用

几种数据结构查找、插入、删除的时间复杂度对比 1、查找是指给定一个元素值进行查找 2、对于数组,插入是指插入到某一下标位置,元素后移 数据结构 查找 插入 删除 数组 O(n) O(n) O(n) 有序数组 O(logn)(二分查找) O(n) O(n) 单链表 O(n) O(n) O(n) 有序单链表 O(n) O(n) O(n) 双链表 O(n) O(n) O(n) 有序双链表 O(n) O(n) 阅读详情

相关推荐

海量数据处理算法 各种STL容器使用的数据结构剖析

教你如何迅速秒杀掉:99%的海量数据处理面试题转载于:结构之法算法之道blog前言   一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。    毕竟受文章和理论之限,本文将摒弃绝大部分

三哥的技术专栏 1747

当今大数据时代应该用什么样的数据结构_数据结构到底是个啥?轻松学习八类数据结构...

应该有不少伙伴都学过数据结构吧?这数据结构真的搞得我头大,这都是啥啊不怕你笑话,我在大学四年都搞不懂数据结构,这是个什么东西?我真的那么蠢吗?非常尴尬)当我在大学的时候,我总觉得这件事太抽象了,无法理解。我越学就越跟不上,学到一半就掉队了。基本上就是属于放弃治疗了。后来我知道这本书中写的是伪代码。我说怎么能把我看得一楞一楞的?就这样,在大学四年的时间里,我愣是没有搞懂数据结构.然后嘞,那些搞懂的,...

weixin_29207149的博客 1161

海量数据处理思路

海量数据处理思路 海量数据处理 海量数据,不能一次加载到内存中 海量数据topK(最大和最小k个数),第k大,第k小的数 海量数据判断一个整数是否存在其中 海量数据找出不重复的数字 找出A,B两个海量url文件中共同的url 海量数据topK 最大K使用最小堆,最小K使用最大堆,这里以最大K为例 海量数据hash分块 维护最小堆的K个数据数据容器 堆中数据是topK大的数据,堆顶的数据是第K大数据 先将海量数据hash再取模m,分成m个小文件,hash(num)%m,也可以直接取模 在

清梦旅人的博客 2753

海量数据处理方法

处理海量数据大数据工程师必备技能,通过对PB级别的数据进行挖掘与分析发掘出有价值的信息,为企业或政府做出正确决策提供依据,是十分必要的一项工作,以下是常用海量数据处理方法!1. Bloom filterBloom filter是一种二进制向量数据结构,具有很好的空间效率和时间效率,可用来检测一个元素是否属于一个集合。该方法的优点是它的插入和查询时间都是常数,并且它查询元素...

weixin_33871366的博客 223

多维数据集的构建方法

今天来讲讲数据仓库中多维数据集的构建方法,其他数据仓库系列文章请点击这里查看,这里就不多说了。多维数据集向导可以帮助我们为多维数据集定义度量值组和维度。在下面的任务中,将使用多维数据集向导来构建多维数据集。 如何定义多维数据集及其属性1.在解决方案资源管理器中,右键单击“多维数据集”,然后单击“新建多维数据集”。2.在“欢迎使用多维数据集向导”页上,单击“下一步”。3.在...

weixin_33922670的博客 1411

数据结构之图

无向图中的极大连通子图称为联通分量: 1.要是子图; 2.子图是连通的; 3.连通子图含有极大顶点数; 4.具有极大顶点数的连通子图包含依附于这些顶点的所有边。 在有向图G中,如果对于每一对vi,vj1.无向图的邻接表 1.图中顶点用一个一维数组存储,(当然顶点也可以单链表来存储,不过数组可以容易读取顶点信息)。另外对于顶点数组中,每个数据元素还需要存储指向第一个邻接点的指针,以便于查找

LC900730的博客 501

BitSet实现原理解析

1.BitSet介绍 Bitset是Java中的一种数据结构。Bitset中主要存储的是二进制位,做的也都是位运算,每一位只用来存储0,1值,主要用于对数据的标记。 Bitset的基本原理是,用1位来表示一个数据是否出现过,0为没有出现过,1表示出现过。使用的时候可以根据某一个位是否为0表示此数是否出现过。JDK中的BitSet集合对是布隆过滤器中经常使用的数据结构Bitmap的相对简单的实现...

qq_2300688967的博客 1349

【特别分享】 Advanced-Java 项目中的海量数据处理实战指南

在当今大数据时代,企业每天都会产生TB甚至PB级别的数据。如何高效处理这些海量数据,从中提取有价值的信息,成为每个Java开发者必须掌握的核心技能。你是否曾经遇到过: - 内存不足导致程序崩溃? - 数据处理速度跟不上业务需求? - 面对亿级数据查询束手无策? 本文将基于Advanced-Java项目的实战经验,为你揭秘海量数据处理的精髓,让你从容应对大数据挑战! ## 一、海量数据处理核心...

gitblog_00503的博客 301

服务端面经_6_28

服务端面经 Java基础 JVM 内存分布 redis 底层数据结构 Linux 指令 海量数据 数据结构与算法 算法 数据结构 数据库 MySQL 计算机网络 TCP/IP HTTP 并发 框架 Spring 操作系统 服务端面经错题集 Java基础 说出几种运行时异常   NullPointerException - 空指针引...

Sonihr的犀牛园 658

十道海量数据处理面试题与十个方法大总结

海量数据处理:十道面试题与十个海量数据处理方法总结作者:July、youwang、yanxionglu。时间:二零一一年三月二十六日本文之总结:教你如何迅速秒杀掉:99%的海量数据处理面试题。有任何问题,欢迎随时交流、指正。出处:http://blog.csdn.net/v_JULY_v。 第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。      首先是这

结构之法 算法之道 46万+

20240305-2-海量数据处理常用技术概述

如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。所谓海量数据处理,是指基于海量数据的存储、处理和操作等。因为数据量太大无法在短时间迅速解决,或者不能一次性读入内存中。在解决海量数据的问题的时候,我们需要什么样的策略和技术,是每一个人都会关心的问题。今天我们就梳理一下在解决大数据问题的时候需要使用的技术,但是注意这里只是从技术角度进行分析,只是一种思想并不代表业界的技术策略。常用到的算法策略。

qq_24428851的博客 1213

海量数据处理面试方法总结

第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。       首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率

记忆力不好的博客 2389

海量数据处理

常用技术概述 如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。 所谓海量数据处理,是指基于海量数据的存储、处理和操作等。因为数据量太大无法在短时间迅速解决,或者不能一次性读入内存中。 在解决海量数据的问题的时候,我们需要什么样的策略和技术,是每一个人都会关心的问题。今天我们就梳理一下在解决大数据问题 的时候需要使用的技术,...

Datawhale 658

海量数据处理基本方法总结

一. 海量数据处理的困难 海量数据处理的困难用一句话概括就是:时空(时间,空间)资源不够。 时间受限:无法在有限的时间内,完成针对海量数据的某项特定工作的处理; 空间受限:无法将海量数据一次性读入内存; 对于时间受限的问题,我们一般的解决办法是高效的算法配合恰当的数据结构,比如哈希表,堆,二叉树等;而对于空间受限的问题,一般的解决办法是“大而化小,分而治之”的策略,既然一次性行不通,那就一部分...

HU1656的博客 1539

海量数据处理-Python

本文主要海量数据处理-包括分块读取,文件切分,并基于bitmap和布隆过滤器实现海量数据处理

IT从业者的成长历程 2391

海量数据处理:十个海量数据处理方法总结

第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。       首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率

算法之路 1531

关于海量数据处理的各种常用数据结构浅谈

  随着互联网的兴起,越来越多的内容被放到互联网中,从而导致海量数据处理受到更多人的重视,尤其是在百度、腾讯等这些涉及海量数据的公司。下面我们简单谈一下关于海量数据处理的一些常用数据结构。包括哈希、bitmap、Bloom filter、堆、mapreduce、trie树。 (1)哈希   对于哈希,相信大家都不会陌生。其基本原理不再说明,哈希的一个关键点是哈希函数的选择,如何使映射...

dengdiaoji0891的博客 525

海量数据处理专题(转)【算法、数据结构

大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯这样的一些涉及到海量数据的公司经常会问到。  下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。   本贴从解决这类

zhoubl668的专栏:远帆,梦之帆! 1360
上一篇: AVL树 VS 红黑树
下一篇: container_of分析
IT_Linux
博客等级 码龄14年 31粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值