Comment réduire la verbosité de la sortie d'exécution de Spark?

Comment réduire la quantité d'informations de trace produites par Spark runtime?

La valeur par défaut est trop détaillée,

Comment l'éteindre, et l'allumer quand j'en ai besoin.

Merci

Mode verbeux

scala> val la = sc.parallelize(List(12,4,5,3,4,4,6,781))
scala> la.collect
15/01/28 09:57:24 INFO SparkContext: Starting job: collect at <console>:15
15/01/28 09:57:24 INFO DAGScheduler: Got job 3 (collect at <console>:15) with 1 output 
...
15/01/28 09:57:24 INFO Executor: Running task 0.0 in stage 3.0 (TID 3)
15/01/28 09:57:24 INFO Executor: Finished task 0.0 in stage 3.0 (TID 3). 626 bytes result sent to driver
15/01/28 09:57:24 INFO DAGScheduler: Stage 3 (collect at <console>:15) finished in 0.002 s
15/01/28 09:57:24 INFO DAGScheduler: Job 3 finished: collect at <console>:15, took 0.020061 s
res5: Array[Int] = Array(12, 4, 5, 3, 4, 4, 6, 781)

Mode silencieux (attendu)

scala> val la = sc.parallelize(List(12,4,5,3,4,4,6,781))
scala> la.collect
res5: Array[Int] = Array(12, 4, 5, 3, 4, 4, 6, 781)
40
demandé sur Jacek Laskowski 2015-01-28 13:04:45

4 réponses

Citant 'Étincelle d'Apprentissage' livre.

Vous pouvez trouver les instructions de journalisation qui sont imprimées dans le shell distrayant. Vous pouvez contrôler la verbosité de la journalisation. Pour ce faire, vous pouvez créer un fichier dans le répertoire conf appelé log4j.propriétés. Les développeurs Spark incluent déjà un modèle pour ce fichier appelé log4j.les propriétés.le modèle. Pour rendre la journalisation moins verbeuse, faites un copie de conf / log4j.properties.modèle appelé conf / log4j. properties et trouvez la ligne suivante:

log4j.rootCategory=INFO, console

Alors abaissez le niveau de journal de sorte que nous montrons seulement le message D'avertissement et au-dessus par changer pour ce qui suit:

log4j.rootCategory=WARN, console

Quand vous rouvrez le shell, vous devriez voir moins de sortie.

34
répondu Shyamendra Solanki 2015-01-28 19:53:08

Étincelle 1.4.1

sc.setLogLevel("WARN")

À partir des commentaires dans le code source:

Les niveaux de journal valides incluent: tous, débogage, erreur, FATAL, INFO, OFF, TRACE, WARN

Spark 2.x

sparkSession.sparkContext().setLogLevel("WARN")

56
répondu user5771281 2018-08-06 07:25:59

Configuration de journalisation au niveau de L'application Spark

, Avec cette approche, pas besoin de code à modifier dans le groupe pour une application spark

  • créons un nouveau fichier log4j. properties à partir de log4j.properties.le modèle.
  • ensuite, modifiez la verbosité avec la propriété log4j.rootCategory.
  • disons, nous devons vérifier erreur s de jar donné alors, log4j.rootCategory=ERROR, console

La commande spark submit serait

spark-submit \
    ... #Other spark props goes here    
    --files prop/file/location \
    --conf 'spark.executor.extraJavaOptions=-Dlog4j.configuration=prop/file/location' \
    --conf 'spark.driver.extraJavaOptions=-Dlog4j.configuration=prop/file/location' \
    jar/location \
    [application arguments] 

Maintenant, vous ne verrez que les journaux qui sont catégorisés par erreur.


Plain log4j way wo Spark (mais nécessite un changement de code)

Configurer la Journalisation OFF pour les paquets org et akka

import org.apache.log4j.{Level, Logger}

Logger.getLogger("org").setLevel(Level.ERROR)
Logger.getLogger("akka").setLevel(Level.ERROR)
4
répondu mrsrinivas 2017-08-14 17:33:50

Dans Unix, vous pouvez toujours rediriger stderr vers /dev/null, c'est-à-dire:

run-example org.apache.spark.examples.streaming.NetworkWordCount localhost 9999 2> /dev/null

-1
répondu Leo 2017-07-18 14:44:16