Configurazione delle proprietà di Apache Log4j2 per Amazon Serverless EMR - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione delle proprietà di Apache Log4j2 per Amazon Serverless EMR

Questa pagina descrive come configurare le proprietà personalizzate di Apache Log4j 2.x per i lavori Serverless su. EMR StartJobRun Se desideri configurare le classificazioni Log4j a livello di applicazione, consulta. Configurazione predefinita dell'applicazione per Serverless EMR

Configurazione delle proprietà di Spark Log4j2 per Amazon Serverless EMR

Con le EMR versioni 6.8.0 e successive di Amazon, puoi personalizzare le proprietà di Apache Log4j 2.x per specificare configurazioni di log dettagliate. Questo semplifica la risoluzione dei problemi dei job Spark su Serverless. EMR Per configurare queste proprietà, usa le classificazioni espark-driver-log4j2. spark-executor-log4j2

Classificazioni Log4j2 per Spark

Per personalizzare le configurazioni dei log di Spark, usa le seguenti classificazioni con. applicationConfiguration Per configurare le proprietà di Log4j 2.x, usa quanto segue. properties

spark-driver-log4j2

Questa classificazione imposta i valori nel log4j2.properties file per il driver.

spark-executor-log4j2

Questa classificazione imposta i valori nel log4j2.properties file per l'esecutore.

Esempio di configurazione Log4j2 per Spark

L'esempio seguente mostra come inviare un job Spark con per personalizzare le configurazioni di Log4j2 applicationConfiguration per il driver e l'esecutore Spark.

Per configurare le classificazioni Log4j a livello di applicazione anziché al momento dell'invio del lavoro, consulta. Configurazione predefinita dell'applicazione per Serverless EMR

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 negli esempi di job Spark

I seguenti esempi di codice mostrano come creare un'applicazione Spark mentre inizializzi una configurazione Log4j2 personalizzata per l'applicazione.

Python
Esempio - Utilizzo di Log4j2 per un lavoro Spark con 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()

Per personalizzare Log4j2 per il driver quando esegui un job Spark, puoi usare la seguente configurazione:

{ "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", // only display Spark error logs "logger.PySparkApp.level": "info", "logger.PySparkApp.name": "PySparkApp" } }
Scala
Esempio - Usare Log4j2 per un job Spark con 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() } }

Per personalizzare Log4j2 per il driver quando esegui un job Spark, puoi usare la seguente configurazione:

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

Considerazioni su Log4j2 per Spark

Le seguenti proprietà Log4j2.x non sono configurabili per i processi Spark:

  • rootLogger.appenderRef.stdout.ref

  • appender.console.type

  • appender.console.name

  • appender.console.target

  • appender.console.layout.type

  • appender.console.layout.pattern

Per informazioni dettagliate sulle proprietà di Log4j2.x che puoi configurare, consulta il file su. log4j2.properties.template GitHub