2017-12-21 29 views
1

Ich weiß, dass wir in RDDs von der Verwendung von groupByKey abgeraten wurden, und ermutigt, Alternativen wie reduceByKey() und aggregateByKey() zu verwenden, da diese anderen Methoden zuerst auf jeder Partition reduzieren und dann groupByKey() durchführen und somit die Datenmenge wird gemischt.Sollte ich groupby() in Dataset/Dataframe vermeiden?

Jetzt ist meine Frage, ob dies immer noch für Dataset/Dataframe gilt? Ich dachte, dass, da die Katalysator-Engine viele Optimierungen durchführt, der Katalysator automatisch weiß, dass er auf jeder Partition reduziert werden muss, und dann die Group-By durchführen soll. Hab ich recht? Oder wir müssen noch Schritte unternehmen, um sicherzustellen, dass die Reduktion auf jeder Partition vor groupBy durchgeführt wird.

Antwort

2

Die groupBy sollte bei Datenrahmen und Datasets verwendet werden. Sie denken vollständig, der Catalyst Optimizer wird den Plan erstellen und alle Zugänge in GroupBy und anderen Aggregationen optimieren, die Sie durchführen möchten.

Es gibt ein gutes Beispiel, das ist in Funken 1.4 auf diesem link, die den Vergleich von ReduceByKey mit RDD und GroupBy mit DataFrame zeigen.

Und man kann sehen, dass wirklich viel schneller als RDD ist, so groupBy alle für mehr Details Ausführung optimieren können Sie die oficial Post von DataBricks mit der introduction of DataFrames

sehen
Verwandte Themen