Es gibt einige gruselige Sprache in der Dokumentation von groupByKey
, warnt, dass es "sehr teuer" sein kann, und schlägt vor, stattdessen aggregateByKey
zu verwenden, wann immer es möglich ist.groupByKey vs. aggregateByKey - woher kommt der Unterschied?
Ich frage mich, ob der Unterschied in den Kosten von der Tatsache herrührt, dass für einige Aggregationen die gesamte Gruppe nie gesammelt und auf den gleichen Knoten geladen werden muss, oder wenn es andere Unterschiede bei der Implementierung gibt. Die Frage ist, ob rdd.groupByKey()
rdd.aggregateByKey(Nil)(_ :+ _, _ ++ _)
entspricht oder ob es immer noch teurer wäre.
verwendet. Ich frage mich, ob der Unterschied in den Kosten von der Tatsache herrührt, dass für einige Aggregationen die gesamte Gruppe niemals gesammelt und auf denselben Knoten geladen werden muss. oder wenn es andere Unterschiede in der Durchführung gibt. "Genau –
Die Leute, die stimmen, um zu schließen - sich interessieren, um zu erklären? "Nicht programmieren"? Hä? – Dima
Behauptung: In den meisten Fällen ist 'rdd.groupByKey()' wesentlich billiger als 'rdd.aggregateByKey (Nil) (_: + _, _ ++ _)'. Ich habe diesen Punkt [hier] (https://stackoverflow.com/a/39316189/1560062) und mit @eliasah [hier] gemacht (https://github.com/awesome-spark/spark-gotchas/blob/master/ 04_rdd_actions_and_transformations_by_example.md # be-smart-about-groupbykey) (externer Link). – zero323