摘要:当前的软件实现是指定一个映射函数,用来把一组键值对映射成一组新的键值对,指定并发的归纳函数,用来保证所有映射的键值对中的每一个共享相同的键组。下面使用模式实现了一个简单的统计日志中单词出现次数的程序
MapReduce是一种从函数式编程语言借鉴过来的模式,在某些场景下,它可以极大地简化代码。先看一下什么是MapReduce:
MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。
当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
简单来说,MapReduce就是把待处理的问题分解为Map和Reduce两个部分。而待处理的数据作为一个序列,每一个序列里的数据通过Map的函数进行运算,再通过Reduce的函数进行聚合成最终的结果。
下面使用mapreduce模式实现了一个简单的统计日志中单词出现次数的程序:
from functools import reduce from multiprocessing import Pool from collections import Counter def read_inputs(file): for line in file: line = line.strip() yield line.split() def count(file_name): file = open(file_name) lines = read_inputs(file) c = Counter() for words in lines: for word in words: c[word] += 1 return c def do_task(): job_list = ["log.txt"] * 10000 pool = Pool(8) return reduce(lambda x, y: x+y, pool.map(count, job_list)) if __name__ == "__main__": rv = do_task()
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44275.html
摘要:大数据除了体积和速度外,数据的多样性和准确性也是大数据的一大特点。这些也被称为大数据的特征。介绍是一个解决大数据问题的分布式可伸缩的框架。介绍计算的模型最早出现在谷歌的一篇研究论文中。相关链接介绍是一个通用的分布式编程框架。 本文作者:foochane 本文链接:https://foochane.cn/article/2019060601.html 1 大数据简介 大数据是这个时代最...
阅读 2004·2021-11-11 16:54
阅读 2075·2019-08-30 15:55
阅读 3583·2019-08-30 15:54
阅读 365·2019-08-30 15:44
阅读 2197·2019-08-30 10:58
阅读 390·2019-08-26 10:30
阅读 3025·2019-08-23 14:46
阅读 3152·2019-08-23 13:46