汉扬编程 编程大纲 如何掌握在内存中处理海量数据的诀窍?

如何掌握在内存中处理海量数据的诀窍?

内存中处理海量数据的几种方法:

(1)Bloom Filter:是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。

(2)Hash: 哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。

(3)Bit-Map:Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。

(4)堆(Heap):堆排序具有空间原址性:任何时候都只需要常数个额外的元素空间存储临时数据,堆排序引入了一种算法设计技巧:使用一种我们称为“堆”的数据结构来进行信息管理。堆不仅用在堆排序中,而且它也可以用来构造一种有效地优先队列。在Java和Lisp中它被引申为垃圾收集存储机制。

(5)双层桶划分:事实上,与其说双层桶划分是一种数据结构,不如说它是一种算法设计思想。面对一堆大量的数据我们无法处理的时候,我们可以将其分成一个个小的单元,然后根据一定的策略来处理这些小单元,从而达到目的。

(6)数据库索引:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是一种数据结构。

(7)倒排索引(Inverted Index):倒排索引是一种以关键字和文档编号结合,并以关键字作为主键的索引结构。倒排索引分为两个部分:第1个部分:由不同索引词(index term)组成的索引表,称为\”词典\”(lexicon)。其中保存了各种中文词汇,以及这些词汇的一些统计信息(例如出现频率nDocs),这些统计信息用于各种排名算法(Ranking Algorithm) [Salton 1989;Witten 1994];第2个部分:由每个索引词出现过的文档集合,以及命中位置等信息构成,也称为\”记录表\”(posting file)或\”记录列表\”(posting list)。

(8)外排序:外部排序常采用的排序方法也是归并排序,这种归并方法由两个不同的阶段组成:第一:采用适当的内部排序方法对输入文件的每个片段进行排序,将排好序的片段(成为归并段)写到外部存储器中(通常由一个可用的磁盘作为临时缓冲区),这样临时缓冲区中的每个归并段的内容是有序的。第二:利用归并算法,归并第一阶段生成的归并段,直到只剩下一个归并段为止。

(9)Trie树:Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。

(10)MapReduce:是一种编程模型,用于大规模数据集的并行运算。概念”Map(映射)”和”Reduce(归约)”,是它们的主要思想,。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对(Mapper的输入键值)映射成一组新的键值对(Mapper的输出键值),指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组(即相同的键的数据发送到同一个reduce上,并进行合并处理)。

希望我的回答能帮助到你!

关注是为了再一次的交流,戳一戳右上角的关注吧!

自学spark,选择什么版本好?

在大数据时代,hadoop.hive.hdfs.mapreduce还有spark成为了最热门的名词。如果你想学习spark,首先你要学习hadoop和hive,这个是大数据生态圈的基石,spark其实和mapreduce功能差不多,但是两者的区别为mapreduce只能进行map和reduce两步节点运算,但是spark能够进行多步节点运算,相较于mapreduce是有优势的。

如何掌握在内存中处理海量数据的诀窍?

推荐你在学习spark前掌握一门编程语言scale这个是大数据未来的主流语言。spark作为一个新生的框架(6年),已经维护的很好很好了。

如何掌握在内存中处理海量数据的诀窍?

综上,推荐你学hadoop.hive.还有scale,并且推荐你用spark2.0

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/52730.html

大数据究竟是什么?大数据有哪些技术呢?(大数据技术是干什么的)

三年模具设计经验,想转行做大数据,有什么建议?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部