Hallo, ich bin neu zu entfachen, und ich habe einen Zweifel in einer Sache, die ich: eSpeicherbezogene Variablen in Spark-
ich eine 4.2 gb CSV-Datei zu einem Funken Datenrahmen gelesen und Persist es von
df_spark = spark.read_csv('data.csv',header=True)
df_spark.persist() ###so MEMORY_ONLY
df_spark.count() ### 6722244 which is correct
# my spark conf is
spark.driver.memory 48g
spark.memory.fraction 0.7
spark.driver.maxResultSize 4g
spark.memory.storageFraction 0.3
Aber nach persistieren in Funke UI localhost: 4040, in der Registerkarte Speicher kann ich Size_in_ Memory 1204.7 Mb sehen. Wenn ich es behalte (MEMORY_ONLY), sollte es nicht 4,2 GB sein? Auch die obige Einstellung in env.sh zeigt, wie die gesamte Speicherberechnung erfolgt.Wenn möglich, kann jemand erklären, wie viel ich einen Job ausführen muss ((48 * (1-0.7) ich denke, von der oben genannten Einrichtung.)
Bitte helfen Sie mir meine Verwirrung zu beseitigen
@ Shirish-Es gab einen Tippfehler ,, es ist 1204 Mb. Ich habe das bearbeitet .. Und ich führe meinen Job auf einer einzigen Maschine ... von 64Gb RAM.4cpu. Wenn ich Ihren Punkt # 1 betrachte, dann sollte der verwendete Arbeitsspeicher mehr als 4,2 GB betragen, solange er bestehen bleibt. Also Größe_in_Memory ?? –
Wir können nicht perfekt sagen, dass "size_in_memory" größer oder kleiner als die CSV-Größe auf der Festplatte ist. Entgegen dem obigen Beispiel betrachte man einen doppelten Wert 1.2345678923456789 benötigt 18 Bytes in CSV und nur 8 Bytes in JVM (mit 'double' Typ). Sie können also im Vergleich zu CSV einen kleineren oder größeren JVM-Footprint haben. Sie können "allgemein" erwarten, dass die JVM-Größe größer ist, wenn viele Zahlen/Ganzzahlen in Ihren Daten vorhanden sind, dies muss jedoch nicht immer der Fall sein. – ShirishT
... hängt völlig von den Daten ab. – ShirishT