Mappers,Reducers,FIlters

时间:2009-05-02 22:44:52

标签: mapreduce filter mappers reducers

我知道map / reduce alghoritm及其用途。它使用的是名为Mappers和Reducers的函数,但我也发现人们使用的是Filters。

过滤器与Mappers相同还是有一些显着差异?

4 个答案:

答案 0 :(得分:8)

过滤器就像一张地图,其传递的函数始终是一个“特征函数”,这是一个函数,对于“这属于何处?”这个问题返回“是”或“否”。

换句话说,想象一个定义为{x |的集合x∈X和 P(x)}。 Filter获取基本集,测试 P(x)是否为true,并仅返回其为真的成员。

所以{ x | x 是一个自然数,奇数( x )}是{1,3,5,7 ...}。

map 应用任意函数,因此您可以将其视为{y | x∈X y = f(x)}。

所以{ y | x 是一个自然数, y =x²}是{1,4,9,16,...}。

答案 1 :(得分:1)

Filter采用“list”和函数,将函数应用于列表的每个成员,并返回一个新列表,其中仅包含函数应用程序返回true的成员。例如:

l = [1,2,3,4]
l = filter(lambda x: x < 3, l)
print l # [1,2]

Map执行相同的操作,但返回包含函数应用程序结果的列表:

l = [1,2,3,4]
l = map(lambda x: x < 3, l)
print l # [True,True,False,False]

答案 2 :(得分:1)

过滤器确定是应保留还是删除项目。映射器只是将值转换为另一个值。因此:映射操作的输出集总是与输入集大小相等。过滤器操作的输出小于输入设置。

答案 3 :(得分:0)

通常,map函数接受输入集和函数,并返回包含每个输入元素的函数输出的集合。过滤器接受输入集和布尔函数,并返回一个包含函数返回true的输入值的集合。