摘要:當前的軟件實現是指定一個映射函數,用來把一組鍵值對映射成一組新的鍵值對,指定并發的歸納函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組。下面使用模式實現了一個簡單的統計日志中單詞出現次數的程序
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()
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44275.html
摘要:大數據除了體積和速度外,數據的多樣性和準確性也是大數據的一大特點。這些也被稱為大數據的特征。介紹是一個解決大數據問題的分布式可伸縮的框架。介紹計算的模型最早出現在谷歌的一篇研究論文中。相關鏈接介紹是一個通用的分布式編程框架。 本文作者:foochane?本文鏈接:https://foochane.cn/article/2019060601.html 1 大數據簡介 大數據是這個時代最...
閱讀 2034·2021-11-11 16:54
閱讀 2111·2019-08-30 15:55
閱讀 3611·2019-08-30 15:54
閱讀 391·2019-08-30 15:44
閱讀 2228·2019-08-30 10:58
閱讀 424·2019-08-26 10:30
閱讀 3048·2019-08-23 14:46
閱讀 3191·2019-08-23 13:46