摘要:當(dāng)前的軟件實(shí)現(xiàn)是指定一個(gè)映射函數(shù),用來(lái)把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的歸納函數(shù),用來(lái)保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組。下面使用模式實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的統(tǒng)計(jì)日志中單詞出現(xiàn)次數(shù)的程序
MapReduce是一種從函數(shù)式編程語(yǔ)言借鑒過(guò)來(lái)的模式,在某些場(chǎng)景下,它可以極大地簡(jiǎn)化代碼。先看一下什么是MapReduce:
MapReduce是Google提出的一個(gè)軟件架構(gòu),用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算。概念“Map(映射)”和“Reduce(歸納)”,及他們的主要思想,都是從函數(shù)式編程語(yǔ)言借來(lái)的,還有從矢量編程語(yǔ)言借來(lái)的特性。
當(dāng)前的軟件實(shí)現(xiàn)是指定一個(gè)Map(映射)函數(shù),用來(lái)把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的Reduce(歸納)函數(shù),用來(lái)保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組。
簡(jiǎn)單來(lái)說(shuō),MapReduce就是把待處理的問(wèn)題分解為Map和Reduce兩個(gè)部分。而待處理的數(shù)據(jù)作為一個(gè)序列,每一個(gè)序列里的數(shù)據(jù)通過(guò)Map的函數(shù)進(jìn)行運(yùn)算,再通過(guò)Reduce的函數(shù)進(jìn)行聚合成最終的結(jié)果。
下面使用mapreduce模式實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的統(tǒng)計(jì)日志中單詞出現(xiàn)次數(shù)的程序:
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()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44275.html
摘要:大數(shù)據(jù)除了體積和速度外,數(shù)據(jù)的多樣性和準(zhǔn)確性也是大數(shù)據(jù)的一大特點(diǎn)。這些也被稱(chēng)為大數(shù)據(jù)的特征。介紹是一個(gè)解決大數(shù)據(jù)問(wèn)題的分布式可伸縮的框架。介紹計(jì)算的模型最早出現(xiàn)在谷歌的一篇研究論文中。相關(guān)鏈接介紹是一個(gè)通用的分布式編程框架。 本文作者:foochane?本文鏈接:https://foochane.cn/article/2019060601.html 1 大數(shù)據(jù)簡(jiǎn)介 大數(shù)據(jù)是這個(gè)時(shí)代最...
閱讀 2043·2021-11-11 16:54
閱讀 2121·2019-08-30 15:55
閱讀 3621·2019-08-30 15:54
閱讀 398·2019-08-30 15:44
閱讀 2239·2019-08-30 10:58
閱讀 432·2019-08-26 10:30
閱讀 3055·2019-08-23 14:46
閱讀 3204·2019-08-23 13:46