2017-08-17 3 views
0

TL; DR est-il possible de supprimer les messages de journalisation Spark individuels sans les écraser? toute la journalisation?Suppression de messages de journalisation Spark spécifiques

Je suis en cours d'exécution d'un travail Spark en streaming sur DME, et de recevoir des messages de journalisation comme:

17/08/17 21:09:00 INFO TaskSetManager: Finished task 101.0 in stage 5259.0 (TID 315581) in 17 ms on ip-172-31-37-216.ec2.internal (107/120) 17/08/17 21:09:00 INFO MapPartitionsRDD: Removing RDD 31559 from persistence list 17/08/17 21:09:00 INFO DAGScheduler: Job 2629 finished: foreachPartition at StreamingSparkJob.scala:52, took 0.080085 s 17/08/17 21:09:00 INFO DAGScheduler: ResultStage 5259 (foreachPartition at StreamingSparkJob.scala:52) finished in 0.077 s 17/08/17 21:09:00 INFO JobScheduler: Total delay: 0.178 s for time 1503004140000 ms (execution: 0.084 s)

Aucun qui est utile, à ce stade de développement, et qui masque réelle exploitation forestière cela est délibérément émis par ma demande. Je voudrais empêcher Spark d'émettre ces messages ou de supprimer leur enregistrement.

AWS Customer Support, et diverses réponses (e.g.) suggèrent que cela peut être réalisé en passant une certaine configuration JSON sur la création de cluster. Cependant, comme il s'agit d'un travail de streaming (pour lequel le cluster devrait, idéalement, rester éternel et simplement redéployé), j'aimerais trouver un moyen de le configurer via les options spark-submit.

Autres réponses (e.g., e.g.) suggèrent que cela peut se faire en soumettant un fichier log4j.properties qui définit log4j.rootCategory=WARN, <appender>. Cependant, this link suggère que rootCategory est la même chose que rootLogger, donc j'interpréteraient cela comme limitant tous l'exploitation forestière (pas seulement Spark de) à WARN - et, en fait, quand je déployé un changement faisant cela, ce fut ce qui a été observé.

Je note que le dernier paragraphe de here dit « Spark utilise log4j pour l'enregistrement. Vous pouvez le configurer en ajoutant un fichier log4j.properties dans le répertoire conf. Une façon de commencer est de copier le log4j.properties.template existant situé là. » . Je suis sur le point d'expérimenter avec ceci pour voir si ceci supprimera les logs INFO qui remplissent notre notation. Cependant, ce n'est toujours pas une solution idéale, car il y a des journaux que Spark émet qui sont utiles - par exemple, quand il enregistre le nombre de fichiers qui ont été ramassés (à partir de S3) par chaque itération de flux. Alors, ce que je ferais idéalement comme serait l'un des:

  • drapeaux de configuration qui peuvent être activées pour désactiver classes spécifiques des messages de journalisation Spark, sans supprimer tous les INFO journaux
  • A « supprimer toute exploitation forestière qui correspond à cette option "regex", que nous pouvons mettre à jour comme il convient pour filtrer les messages qui ne nous intéressent pas

L'un de ces éléments existe-t-il?

(Pour répondre à une réponse possible - je suis peu disposé à émettre que les journaux de ma propre application à WARN et au-dessus)

Répondre

1

vous pouvez contrôler les journaux par enregistreur namesparce de log4j.properties, voici un exemple:

log4j.rootLogger=WARN, console 
# add a ConsoleAppender to the logger stdout to write to the console 
log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.target=System.out 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
# use a simple message format 
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 
# set the log level for these components 
log4j.logger.org.apache.spark=WARN 
log4j.logger.org.spark-project=ERROR 
log4j.logger.org.apache.hadoop=ERROR 
log4j.logger.io.netty=ERROR 
log4j.logger.org.apache.zookeeper=ERROR 
+0

Merci!Je ne savais pas que vous pouviez définir différents niveaux de journalisation au niveau du package, et vos exemples m'ont aidé à remarquer que les messages de journalisation incluaient le nom de la classe dans leur préambule. – scubbo