Es ist ein Fehler aufgetreten: ERROR spark.SparkContext: Fehler beim Initialisieren von SparkContext

java.lang.IllegalArgumentException: Der Systemspeicher 100663296 muss mindestens 4.718592E8 sein. Bitte verwenden Sie einen größeren Heap.

Beim Entwickeln eines Spark- Projekts in Eclipse und beim Versuch, das Programm direkt in Spark auszuführen, ist der folgende Fehler aufgetreten:

 

Dies liegt offensichtlich daran, dass der von der JVM angeforderte Speicher nicht ausreicht und der SparkContext nicht gestartet werden kann. Aber wie richte ich es ein?

Überprüfte aber das Startskript

 

[Java]  Einfache  Kopie anzeigen

  1. #! / bin / bash  
  2. /usr/local/spark-1.6.0/bin/spark-submit \  
  3. --class cn.spark.study.Opt17_WordCount \  
  4. --num-executors 3 \  
  5. --Treiberspeicher <strong> 100 m </ strong> \   
  6. --executor-memory <strong> 100m </ strong> \  
  7. --executor-Farben 3 \  
  8. /root/sparkstudy/Java/spark-study-java-0.0.1-SNAPSHOT-jar-with-dependencies.jar \  
  9. --master spark: // yun01: 7077  

 

  1. <pre code_snippet_id = "1674698" snippet_file_name = "blog_20160506_2_7762008" name = "code" class = "java" style = "color: rgb (51, 51, 51); font-size: 14px; line-height: 26px;">  
 

 

Es scheint, dass der Speicher des Treibers nicht ausreicht. Wenn ich versuche, den Speicher des Treibers auf 400 MB zu erhöhen

 

Immer noch brach der folgende Fehler

Ausnahme im Thread "main" java.lang.IllegalArgumentException: Der Systemspeicher 402128896 muss mindestens 4.718592E8 sein. Bitte verwenden Sie einen größeren Heap.

Zu diesem Zeitpunkt können Sie es erneut erhöhen und auf 1 g geben (dieses Problem sollte nur nach dem Upgrade von Spark 1.5 oder 1.6 auftreten).

Führen Sie dann erneut aus und erhalten Sie das Ergebnis normal

Sie können im Code auch Folgendes angeben:

 val conf = new SparkConf (). setAppName ("Wortanzahl")
 conf.set ("spark.testing.memory", "1g") // Der folgende Wert beträgt mehr als 512 m

Ursprünglicher Link: https://blog.csdn.net/wangshuminjava/article/details/79598720

 

[Java]  Einfache  Kopie anzeigen

 Sehen Sie sich das Codestück auf CODE anAbgeleitet zu meinem Codestück

  1. / ** 
  2.    * Gibt die Gesamtmenge des zwischen Ausführung und Speicher gemeinsam genutzten Speichers in Byte zurück. 
  3.    * /  
  4.   private def getMaxMemory (conf: SparkConf): Long = {  
  5.     val systemMemory = conf.getLong ("spark.testing.memory", Runtime.getRuntime.maxMemory)  
  6.     val reservedMemory = conf.getLong ("spark.testing.reservedMemory",  
  7.       if (conf.contains ("spark.testing")) 0 else RESERVED_SYSTEM_MEMORY_BYTES)  
  8.     val minSystemMemory = reservedMemory * 1.5  
  9.     if (systemMemory <minSystemMemory) {  
  10.       Neue IllegalArgumentException auslösen (s "Systemspeicher $ systemMemory muss" +  
  11.         s "mindestens $ minSystemMemory sein. Bitte verwenden Sie einen größeren Heap.")  
  12.     }}  
  13.     val usableMemory = systemMemory - reservedMemory  
  14.     val memoryFraction = conf.getDouble ("spark.memory.fraction", 0,75)  
  15.     (usableMemory * memoryFraction) .toLong  
  16.   }}  

 

 

Hier ist also hauptsächlich val systemMemory = conf.getLong ("spark.testing.memory", Runtime.getRuntime.maxMemory).

Die Definition und Erklärung von conf.getLong () lautet

[Java]  Einfache  Kopie anzeigen

 Sehen Sie sich das Codestück auf CODE anAbgeleitet zu meinem Codestück

  1. getLong (Schlüssel: String, defaultValue: Long): Long  
  2. Holen Sie sich einen Parameter als Long und greifen Sie auf einen Standard zurück, wenn er nicht festgelegt ist  

Ich denke du magst

Origin blog.csdn.net/qq_41587243/article/details/85699351
Empfohlen
Rangfolge