Ich habe eine Spark-Anwendung, die nicht genügend Arbeitsspeicher, der Cluster verfügt über zwei Knoten mit rund 30G RAM, und die Eingabedatengröße ist über einige hundert GB.Apache Spark nicht genügend Arbeitsspeicher mit kleineren Partitionen
Die Anwendung ist ein Spark SQL-Auftrag, es liest Daten aus HDFS und erstellen Sie eine Tabelle und Cache, dann einige Spark SQL-Abfragen und schreibt das Ergebnis zurück in HDFS.
Anfangs teilte ich die Daten in 64 Partitionen und ich bekam OOM, dann konnte ich das Speicherproblem beheben, indem ich 1024 Partitionen verwendete. Aber warum habe ich mit mehr Partitionen geholfen, das OOM-Problem zu lösen?
Ich stimme zu, dass die Größe jeder Partition kleiner ist, aber da ich die RDD zwischenspeichern (sollte dies in der Post erwähnen), sollten diese Partitionen immer noch im Speicher sein, oder? Daher sollte die Größe der Daten im Speicher unabhängig von der Anzahl der Partitionen gleich sein – elgoog