Join vs COGROUP in der SCHWEINEHALTUNG
Gibt es irgendwelche Vorteile (wrt-Leistung /no der Karte reduziert ), wenn ich COGROUP anstelle von JOIN in pig ?
http://developer.yahoo.com/hadoop/tutorial/module6.html spricht über den Unterschied in der Art der Ausgabe, die Sie produzieren. Aber, ohne auf die "output-schema", gibt es keinen Unterschied in der Leistung ?
InformationsquelleAutor raj | 2011-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine großen performance-Unterschiede. Der Grund, warum ich sagen, das Sie beide am Ende zu einer einzelnen MapReduce-job, das senden der gleichen Daten nach vorne zu der Reduzierstücke. Beide müssen senden Sie alle Datensätze vorwärts mit dem Schlüssel als Fremdschlüssel. Wenn überhaupt, ist der
COGROUP
vielleicht ein bisschen schneller weil es nicht das kartesische Produkt über die hits und hält Sie in separaten Taschen.Wenn man von Datensätzen zu klein ist, können Sie eine join-option genannt "replicated join". Diese verteilen die zweiten Daten über alle map-tasks und lädt Sie in den Hauptspeicher. Auf diese Weise, es kann die ganze Mitmach-der mapper und nicht benötigen einen Druckminderer. In meiner Erfahrung ist dies sehr erwähnenswert ist es, weil der Engpass in Verknüpfungen und cogroups ist das mischen der gesamte Datensatz auf die reducer. Sie können nicht mit
COGROUP
meines Wissens.Was ich damit meine, Kartesisches Produkt, ist, dass, wenn es mehrere Treffer, auf die die foreign key -, erhalten Sie weitere Datensätze. Zum Beispiel, wenn es 3x "abcde" in den Daten, und dann 4x "abcde" in der zweiten Daten-set, es-Ausgänge 12x Aufzeichnungen, weil es passt. Inzwischen, in COGROUP, er hält die Beziehungen zu trennen.
InformationsquelleAutor Donald Miner