Configuration des propriétés Apache Log4j2 pour Amazon Serverless EMR - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration des propriétés Apache Log4j2 pour Amazon Serverless EMR

Cette page décrit comment configurer les propriétés personnalisées d'Apache Log4j 2.x pour les tâches EMR sans serveur sur. StartJobRun Si vous souhaitez configurer les classifications Log4j au niveau de l'application, consultez. Configuration d'application par défaut pour EMR Serverless

Configuration des propriétés de Spark Log4j2 pour Amazon Serverless EMR

Avec les EMR versions 6.8.0 et supérieures d'Amazon, vous pouvez personnaliser les propriétés d'Apache Log4j 2.x pour spécifier des configurations de journal précises. Cela simplifie le dépannage de vos tâches Spark sur EMR Serverless. Pour configurer ces propriétés, utilisez les spark-executor-log4j2 classifications spark-driver-log4j2 et.

Classifications Log4j2 pour Spark

Pour personnaliser les configurations du journal Spark, utilisez les classifications suivantes avec applicationConfiguration. Pour configurer les propriétés de Log4j 2.x, utilisez ce qui suit. properties

spark-driver-log4j2

Cette classification définit les valeurs du log4j2.properties fichier pour le pilote.

spark-executor-log4j2

Cette classification définit les valeurs du log4j2.properties fichier pour l'exécuteur.

Exemple de configuration Log4j2 pour Spark

L'exemple suivant montre comment soumettre une tâche Spark pour personnaliser les applicationConfiguration configurations Log4j2 pour le pilote et l'exécuteur Spark.

Pour configurer les classifications Log4j au niveau de l'application plutôt que lorsque vous soumettez le travail, consultez. Configuration d'application par défaut pour EMR Serverless

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "/usr/lib/spark/examples/jars/spark-examples.jar", "entryPointArguments": ["1"], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' --configuration-overrides '{ "applicationConfiguration": [ { "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", // will only display Spark error logs "logger.IdentifierForClass.name": "classpath for setting logger", "logger.IdentifierForClass.level": "info" } }, { "classification": "spark-executor-log4j2", "properties": { "rootLogger.level":"error", // will only display Spark error logs "logger.IdentifierForClass.name": "classpath for setting logger", "logger.IdentifierForClass.level": "info" } } ] }'

Log4j2 dans les exemples de tâches Spark

Les exemples de code suivants montrent comment créer une application Spark pendant que vous initialisez une configuration Log4j2 personnalisée pour l'application.

Python
Exemple - Utiliser Log4j2 pour une tâche Spark avec Python
import os import sys from pyspark import SparkConf, SparkContext from pyspark.sql import SparkSession app_name = "PySparkApp" if __name__ == "__main__": spark = SparkSession\ .builder\ .appName(app_name)\ .getOrCreate() spark.sparkContext._conf.getAll() sc = spark.sparkContext log4jLogger = sc._jvm.org.apache.log4j LOGGER = log4jLogger.LogManager.getLogger(app_name) LOGGER.info("pyspark script logger info") LOGGER.warn("pyspark script logger warn") LOGGER.error("pyspark script logger error") // your code here spark.stop()

Pour personnaliser Log4j2 pour le pilote lorsque vous exécutez une tâche Spark, vous pouvez utiliser la configuration suivante :

{ "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", // only display Spark error logs "logger.PySparkApp.level": "info", "logger.PySparkApp.name": "PySparkApp" } }
Scala
Exemple - Utilisation de Log4j2 pour une tâche Spark avec Scala
import org.apache.log4j.Logger import org.apache.spark.sql.SparkSession object ExampleClass { def main(args: Array[String]): Unit = { val spark = SparkSession .builder .appName(this.getClass.getName) .getOrCreate() val logger = Logger.getLogger(this.getClass); logger.info("script logging info logs") logger.warn("script logging warn logs") logger.error("script logging error logs") // your code here spark.stop() } }

Pour personnaliser Log4j2 pour le pilote lorsque vous exécutez une tâche Spark, vous pouvez utiliser la configuration suivante :

{ "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", // only display Spark error logs "logger.ExampleClass.level": "info", "logger.ExampleClass.name": "ExampleClass" } }

Considérations relatives à Log4j2 pour Spark

Les propriétés Log4j2.x suivantes ne sont pas configurables pour les processus Spark :

  • rootLogger.appenderRef.stdout.ref

  • appender.console.type

  • appender.console.name

  • appender.console.target

  • appender.console.layout.type

  • appender.console.layout.pattern

Pour des informations détaillées sur les propriétés Log4j2.x que vous pouvez configurer, consultez le fichier sur. log4j2.properties.template GitHub