python 里面的 map、reduce、filter 这些函数和 mapreduce 有什么关系?
『python 里面的 map、reduce、filter 这些函数』和 『谷歌三驾马车之一的 mapreduce』 有什么关系?
有关系吗?还是一点关系都没有?就想 java 和 javascript 一样?
回答:
个人感觉,除了函数名很像外,没啥相同的。
map,reduce都是Python自带的高阶函数,返回类型为生成器。至于什么是生成器,这些可以去百度,也可以参考这篇blog。完全理解Python迭代对象、迭代器、生成器
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。可以看看这个MapReduce 原理与实践。
回答:
$$
idea是一样的,map用来将数据处理,reduce聚合数据
$$
举一个map的例子
gather = map(lambda x:int(x),['1','2','3'])
$$
上面的例子中,map对list中的每一个元素做一个映射的处理(str 转 int)\\
其接收两个参数 callable,iterable
$$
reduce的例子
$$
python高版本中已经把reduce从内置库中移到functool...原因大概是用的不频繁\\
reduce接收三个参数 callable,iterable,init初始值\\
会遍历iterable,将每个遍历到的元素和init初始值做对应的处理
$$
def add(x, y): return x + y
sum1 = reduce(add, [1,2,3,4,5])
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5],0)
# sum([1,2,3,4,5]) 岂不是更方便~~
$$
题主的意思大概是想问hadoop那种mapreduce和python里内置函数的区别...\\
idea是一样的,都是想用map处理数据,reduce聚合数据\\
在上面的例子中,将列表的元素换成str,这个str长这个样'XXX':'YYY'\\
map的任务可以是遍历所有的str,将其转换维(XXX:YYY)的key-value对\\
而reduce接收map处理完的key-value对集合,将init初始值设置为dict\\
聚合函数设置为dict[key]+=value\\
这样就可以实现wordCount这样的任务\\
$$
所以...还是有联系的...毕竟是现有map,reduce函数,后有MapReduce
以上是 python 里面的 map、reduce、filter 这些函数和 mapreduce 有什么关系? 的全部内容, 来源链接: utcz.com/p/938651.html