Ich nehme diese course.Funke reduzieren Funktion: verstehen, wie es funktioniert
Es besagt, dass der Reduce-Vorgang auf RDD eine Maschine zu einer Zeit durchgeführt wird. Das heißt, wenn Ihre Daten auf zwei Computer aufgeteilt sind, dann funktioniert die unten stehende Funktion für Daten im ersten Computer, findet das Ergebnis für diese Daten und dann wird ein einzelner Wert vom zweiten Computer genommen, die Funktion ausgeführt und es wird fortgesetzt auf diese Weise, bis es mit allen Werten von Maschine 2 fertig ist. Ist das korrekt?
Ich dachte, dass die Funktion zur gleichen Zeit auf beiden Maschinen in Betrieb nehmen wird und dann, wenn es Ergebnisse von zwei Maschinen hat, wird es wieder die Funktion zum letzten Mal
rdd1=rdd.reduce(lambda x,y: x+y)
Update ausführen 1-- ------------------------------------------
wird unter den Schritten geben schnellere Antwort im Vergleich zu reduzieren Funktion?
Rdd=[3,5,4,7,4]
seqOp = (lambda x, y: x+y)
combOp = (lambda x, y: x+y)
collData.aggregate(0, seqOp, combOp)
Update 2 -----------------------------------
sollten beide Satz von Codes unten in der gleichen Zeit ausgeführt? Ich überprüfte und es scheint, dass beide die gleiche Zeit nehmen.
import datetime
data=range(1,1000000000)
distData = sc.parallelize(data,4)
print(datetime.datetime.now())
a=distData.reduce(lambda x,y:x+y)
print(a)
print(datetime.datetime.now())
seqOp = (lambda x, y: x+y)
combOp = (lambda x, y: x+y)
print(datetime.datetime.now())
b=distData.aggregate(0, seqOp, combOp)
print(b)
print(datetime.datetime.now())
Ich habe deine Antwort gelesen. Es fällt mir schwer, Ihre Eingaben zu verstehen und herauszufinden, ob die im Kurs abgegebene Aussage richtig ist oder nicht. Es scheint, dass die Aussage falsch ist, basierend auf "mehrere Partitionen können zur gleichen Zeit entweder von einem einzelnen Arbeiter (mehrere Executor-Threads) oder verschiedenen Arbeitern" verarbeitet werden. Bitte geben Sie eine direkte Antwort? Bitte markieren Sie, was Sie sagen, mit einem Beispiel - zum Beispiel RDD ist [1,2,3,4,5,6] und [1,2,3] sind auf einer Maschine und Rest der Elemente auf der anderen Maschine. Wie behandeln Spark und Scala diese einzeln? Danke für deine Arbeit. – user2543622
Ich habe den Kurs nicht gesehen, also kann ich nicht darauf verweisen, aber wenn sie dir wirklich sagen, dass es zu der Zeit fertig ist, hast du $ 200 gesenkt. 'reduce', mit Ausnahme des Treiberteils, verwendet denselben Mechanismus wie die Standard-Spark-Transformationen und weist daher die gleiche Parallelität auf. – zero323
Bitte markieren Sie, was Sie sagen, mit einem Beispiel - zum Beispiel RDD ist [1,2,3,4,5,6] und [1,2,3] sind auf einem Rechner und Rest der Elemente auf dem anderen Rechner. Wie gehen Funken und Scala mit diesen anders um? Wäre es auch möglich, meine aktualisierte Frage zu beantworten? – user2543622