处理大量APP开发的数据
- 编辑:admin -在花了几页篇幅讨论过要使存储成本与数据价值相匹配,消除那些价值非常低的数据后,现在让我们把注意力转回到一- 个更激动人心的问题上,即当我们的数据都是有价值的,但它们太多了,以至于我们不能高效地处理它们时,我们应该怎么做呢?
在花了几页篇幅讨论过要使存储成本与数据价值相匹配,消除那些价值非常低的数据后,现在让我们把注意力转回到一- 个更激动人心的问题上,即当我们的数据都是有价值的,但它们太多了,以至于我们不能高效地处理它们时,我们应该怎么做呢?如果你曾经上过代数课,那么很可能你已经知道这个问题的答案了。还记得你的代数或微积分老师曾教过你的,在解方程之前,要把它们简化吗?同样地,这种帮助你成功解决数学问题的建议也能够帮助你成功解决处理大量数据的问题。
如果可以轻松地把数据分段或者把它们关联到服务上,那么我们只需应用在第22章到第24章中学到的概念即可。AKF扩展立方就能够解决你的需求。但当你需要遍历整个数据集才能生成一个答案,如要统计美国国会图书馆中所有图书中的单词数量,或者要盘点某个非常大且很复杂的存货系统时,又该如何做呢?如果我们想迅速地做完这种事,我们就需要找到一种有效的分布工作的方法。这种工作分布可以采用多次遍历系统的形式,第- -次遍历分析(或映射)工作,第二次遍历计算(或简化)工作。Google引人了一种软件框架来支持这种大型数据集的分布式处理,称为MapReduce。“下面是对这种模型的描述以及如何应用它来解决较大问题的示例。
简而言之,MapReduce具有一个映射( map)函数和一个简化( reduce)函数。映射函数的输人是一个键值对,它会生成一个中间的键值对。外行可能不会立刻发现它的有用之处,但这里的目的是让一个APP开发分布式进程为另一个分布式进程创造出有用的中间信息,以便后者进行编译。输人的键可能是文档的名字,或者是指向文档中的一段的名字或指针。值可以是文档中所有词语构成的内容。在我们的分布式存货系统中,键可以是存货的地点,值可以是这个地点货物的名字,库存中的每项货物名字都会出现一次。例如,如果你有五个螺丝和两枚钉子,那么值可能是螺丝、螺丝、螺丝、螺丝、螺丝、钉子、钉子。