View a markdown version of this page

Configurazione delle proprietà di Apache Log4j2 per Amazon EMR Serverless - 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 EMR Serverless

Questa pagina descrive come configurare le proprietà personalizzate di Apache Log4j 2.x per i job EMR Serverless su. StartJobRun Se si desidera configurare le classificazioni Log4j a livello di applicazione, fare riferimento a. Configurazione predefinita dell'applicazione per EMR Serverless

Configura le proprietà di Spark Log4j2 per Amazon EMR Serverless

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

Classificazioni Log4j2 per Spark

Per personalizzare le configurazioni dei log di Spark, utilizza 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 per personalizzare le configurazioni Log4j2 applicationConfiguration per il driver e l'esecutore Spark.

Per configurare le classificazioni Log4j a livello di applicazione anziché quando invii il lavoro, fai riferimento a. Configurazione predefinita dell'applicazione per 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 negli esempi di job Spark

I seguenti esempi di codice dimostrano come creare un'applicazione Spark mentre si inizializza una configurazione Log4j2 personalizzata per l'applicazione.

Python
Esempio- Usare 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, usa 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 lavoro 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, usa 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 Log4j2.x proprietà 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 Log4j2.x proprietà configurabili, consulta il log4j2.properties.template file su. GitHub