2009-05-02 5 views
1

Ich weiß über map/reduce algorithm und seine Verwendung. Es verwendet Funktionen, die Mapper und Reducers genannt werden, aber ich finde auch, dass Leute das Wort Filter benutzen.Mapper, Reducers, FIlters

Sind Filter identisch mit Mappers oder gibt es einen signifikanten Unterschied?

Antwort

8

Ein Filter ist wie eine Karte, für die die übergebene Funktion immer eine "charakteristische Funktion" ist, dh eine Funktion, die entweder "ja" oder "nein" zur Frage "Gehört das hierher?"

Mit anderen Worten, denken Sie an eine Menge definiert als {x | x ∈ X und P (x)}. Filter nimmt den Basissatz, testet, ob P (x) wahr ist, und gibt nur die Elemente zurück, für die es wahr ist.

So {x | x ist eine natürliche Zahl und ungerade (x)} ist {1,3,5,7 ...}.

Eine Karte wendet eine beliebige Funktion an, so dass Sie sich das als eine Menge wie {y | vorstellen können x X und y = f (x)}.

So {y | x ist eine natürliche Zahl und y = x ²} ist {1,4,9,16, ...}.

+0

Charlie - Kleine, gut geschriebene Antworten wie diese lassen mich wünschen, ich könnte Ihre Antwort zweimal abstimmen. –

+0

Kurz gesagt, Filter ist eine Karte, die die charakteristische Funktion verwendet. – Azder

+0

Ähm, ja und nein, @Azder. Wenn Sie eine Karte mit derselben ungeraden (x) Funktion erstellt hätten, würden Sie {1, 0, 1, 0, 1, 0, ...} erhalten. Ein Filter ist wirklich eine Projektion; Sie sind * nur * jene Elemente, für die das Prädikat gilt. –

1

Filter nimmt eine "Liste" und eine Funktion, wendet die Funktion auf jedes Mitglied der Liste an und gibt eine neue Liste zurück, die nur Mitglieder enthält, bei denen die Anwendung der Funktion wahr zurückgegeben hat. Zum Beispiel:

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

Karte macht das Gleiche, aber gibt eine Liste der Ergebnisse der Funktionsanwendung enthalten:

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

Ein Filter legt fest, ob ein Element sollte beibehalten oder entfernt werden. Ein Mapper übersetzt den Wert einfach in einen anderen. Als Konsequenz: Der Ausgabesatz einer Map-Operation ist immer gleich groß wie der Eingabesatz. Die Ausgabe bei einer Filteroperation ist kleiner als die eingegebene Menge.

0

Im Allgemeinen nehmen die Kartenfunktionen einen Eingabesatz und eine Funktion an und geben ein Set zurück, das die Funktionsausgabe für jedes Eingabeelement enthält. Ein Filter verwendet eine Eingabe- und eine Boolesche Funktion und gibt eine Menge zurück, die die Eingabewerte enthält, für die die Funktion wahr zurückgibt.