in der Vergangenheit zu ändern, ich mit niedrigem Niveau Parallelisierung gearbeitet (openmpi, openmp, ...)Best-Verfahren Inmutable Funken RDDs
ich zur Zeit in einem Spark-Projekt arbeiten bin und ich weiß nicht, das beste Verfahren mit RDDs zu arbeiten, weil sie unveränderbar sind.
Ich werde mein Problem mit einem einfachen Beispiel erklären, stellen Sie sich vor, dass ich in meiner RDD ein Objekt habe und ich ein Attribut aktualisieren muss.
Die praktischste und speichereffizienteste Lösung ist die Implementierung einer Methode namens setAttribute (new_value).
Funken RDDs sind inmutable, so brauche ich eine Funktion (zB myModifiedCopy (new_value)), die eine Kopie dieses Objekts zurück, aber mit dem new_value in seiner Eigenschaft und die Aktualisierung des RDD wie diese zu erstellen:
myRDD = myRDD.map(x->x.myModifiedCopy(new_value)).cache()
Meine Objekte sind sehr komplex und sie verwenden viel RAM-Speicher (sie sind wirklich riesig). Dieser Vorgang ist langsam, Sie müssen eine vollständige Kopie aller Elemente der RDD erstellen, um nur einen kleinen Wert zu ändern.
Gibt es ein besseres Verfahren, um mit dieser Art von Problemen umzugehen?
Empfehlen Sie eine andere Technologie?
Ich würde für eine veränderbare RDD töten.
Vielen Dank im Voraus.
Möglicherweise müssen Sie zur Kasse gehen http://spark.apache.org/docs/latest/programming-guide.html#rdd-persistence – Shankar
Sie können Ihre RDD auf DISK oder OFF_HEAP speichern, wenn Speicher das einzige Problem ist. – Shankar
Wenn Speicher das Problem ist, dann würde ich es nicht zwischenspeichern. Ich würde einfach mehr Partitionen mit der Eigenschaft 'spark.default.parallelism' verwenden. Aber ich denke, das ist nicht das Hauptproblem, das er lösen will? –