Was ist spark.driver.maxResultSize?

Das ref sagt:

Begrenzung der Gesamtgröße der serialisierten Ergebnisse aller Partitionen für jede Spark-Aktion (z. B. Sammeln). Sollte mindestens 1M oder 0 für unbegrenzt sein. Aufträge werden abgebrochen, wenn die Gesamtgröße über dieser Grenze liegt. Ein zu hohes Limit kann zu Fehlern aufgrund von Speichermangel im Treiber führen (abhängig von spark.driver.memory und dem Speicheroverhead von Objekten in JVM). Durch das Festlegen eines geeigneten Grenzwerts kann der Treiber vor Fehlern aufgrund von Speichermangel geschützt werden.

Was genau macht dieses Attribut? Ich meine, zuerst (da ich nicht mit einem Job kämpfe, der aufgrund von Speicherfehlern ausfällt), dachte ich, ich sollte das erhöhen.

Dieses Attribut legt anscheinend die maximale Größe des Ergebnisses fest, das ein Mitarbeiter an den Fahrer senden kann. Die Standardeinstellung (1G) ist daher der beste Ansatz, um den Fahrer zu schützen.

Aber in diesem Fall muss der Mitarbeiter weitere Nachrichten senden, sodass der Overhead nur darin besteht, dass der Auftrag langsamer ausgeführt wird.

Wenn ich richtig verstehe, unter der Annahme, dass ein Arbeiter 4G Daten an den Fahrer senden möchte, dann mussspark.driver.maxResultSize=1G veranlasst den Worker, 4 Nachrichten zu senden (anstelle von 1 mit unbegrenztemspark.driver.maxResultSize). Wenn ja, sollte es falsch sein, dieses Attribut zu erhöhen, um meinen Fahrer vor dem Mord an Yarn zu schützen.

Aber immer noch bleibt die obige Frage offen. Ich meine, was ist, wenn ich sie auf 1M (das Minimum) stelle, wird sie die sicherste Lösung sein?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage