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)
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.
É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")
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)
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