Ich habe ein Spark-Java-Programm, bei dem ein groupByKey mit einem mapValues-Schritt ausgeführt wird und ein PairRDD mit Wert als Iterable
aller eingegebenen rdd-Werte zurückgibt. Ich habe gelesen, dass das Ersetzen von reduceByKey an der Stelle von groupByKey mit mapValues einen Leistungsgewinn bringt, aber ich weiß nicht, wie ich reduceByKey
auf mein Problem hier anwenden kann.Wie ersetzt man den groupByKey mit reduceByKey, um in Spark Java als Iterable-Wert zurückzugeben?
Speziell ich habe die ein Eingangspaar RDD, die Wert mit Typ Tuple5
hat. Nach den Umwandlungen groupByKey und mapValues muss ich ein Schlüssel-Wert-Paar RDD erhalten, bei dem der Wert ein Iterable der Eingabewerte sein muss.
JavaPairRDD<Long,Tuple5<...>> inputRDD;
...
...
...
JavaPairRDD<Long, Iterable<Tuple5<...>>> groupedRDD = inputRDD
.groupByKey()
.mapValues(
new Function<Iterable<Tuple5<...>>,Iterable<Tuple5<...>>>() {
@Override
public Iterable<Tuple5<...>> call(
Iterable<Tuple5<...>> v1)
throws Exception {
/*
Some steps here..
*/
return mappedValue;
}
});
Gibt es eine Möglichkeit, durch die ich die obige Transformation reduceByKey
mit bekommen konnte?
Was sind 'Einige Schritte hier '? Du brauchst eine Logik, um es zu reduzieren. – philantrovert
In der Funktion 'mapValues' sortiere ich jeden Wert basierend auf einem Schlüssel in' Tuple5'. Ich dachte, dass es hier nicht relevant ist, deshalb habe ich sie nicht aufgenommen. – Vishnu
_Ich habe gelesen, dass das Ersetzen von reduceByKey an der Stelle von groupByKey mit mapValues zu einer Leistungssteigerung führt - Sie haben falsch gelesen. – zero323