『python 里面的 map、reduce、filter 这些函数』和 『谷歌三驾马车之一的 mapreduce』 有什么关系?
有关系吗?还是一点关系都没有?就想 java 和 javascript 一样?
『python 里面的 map、reduce、filter 这些函数』和 『谷歌三驾马车之一的 mapreduce』 有什么关系?
有关系吗?还是一点关系都没有?就想 java 和 javascript 一样?
$$ 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
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
个人感觉,除了函数名很像外,没啥相同的。
map,reduce都是Python自带的高阶函数,返回类型为生成器。至于什么是生成器,这些可以去百度,也可以参考这篇blog。完全理解Python迭代对象、迭代器、生成器
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。可以看看这个MapReduce 原理与实践。