python 里面的 map、reduce、filter 这些函数和 mapreduce 有什么关系?

『python 里面的 map、reduce、filter 这些函数』和 『谷歌三驾马车之一的 mapreduce』 有什么关系?

有关系吗?还是一点关系都没有?就想 java 和 javascript 一样?

阅读 1.9k
2 个回答
新手上路,请多包涵

个人感觉,除了函数名很像外,没啥相同的。
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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题