Python 中的 Map&Reduce
面对越来越多要处理的数据,我们需要有好的并行算法来帮助我们简化处理流程。并行算法就是一些可同时执行的诸进程的集合,这些进程互相作用和协调动作从而达到给定问题的求解。在这之中分布式算法正在越来越流行。分布式算法,就是指在完成乘加功能时通过将各输入数据每一对应位产生的运算结果预先进行相加形成相应的部分积,然后再对各部分进行累加形成最终结果。
MapReduce就是一种分布式算法的原理,也可以说是一种编程模型。提起map和reduce想必大家并不陌生,map()就是映射函数,而reduce代表的是归并函数。
2003年,MapReduce的诞生标志了超大规模数据处理的第一次革命,而开创这段青铜时代的就是论文《MapReduce: Simplified Data Processing on Large Clusters》,解决了海量数据处理扩展性差的问题。
Google公司2003年提出了一个名为MapReduce的编程模型,用于处理大规模海量数据,并在之后广泛的应用于Google的各项应用中,2006年Apache的Hadoop项目正式将MapReduce纳入到项目中。
如果已经了解过诸如SQL数据库的同学一定觉得数据库对于一些查询之类的操作十分便捷,然而在数据表的行数超过十亿之后处理起来就会非常吃力。MapReduce就可以应用于大规模数据集(大于1TB)的并行运算。
然而我们今天讲的并不是真正的MapReduce,python中内建了map()
和reduce()
函数。
Python 的 map 和 reduce 是Python的内置函数,而 Hadoop 的 MapReduce 是一个计算框架。 两者之间没有直接的关系。但是他们的部分计算操作思想是类似的,其实可以说,MapReduce就是基于map()函数和reduce()函数的
映射函数map()
映射函数接收一个数组,对其中的每个元素都进行相同的处理。
比如我们看下面的例子:
def f(x