View a markdown version of this page

Konfigurieren Sie die Apache Log4j2-Eigenschaften für Amazon EMR Serverless - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren Sie die Apache Log4j2-Eigenschaften für Amazon EMR Serverless

Auf dieser Seite wird beschrieben, wie benutzerdefinierte Apache Log4j 2.x-Eigenschaften für EMR Serverless-Jobs unter konfiguriert werden. StartJobRun Informationen zur Konfiguration von Log4J-Klassifizierungen auf Anwendungsebene finden Sie unter. Standardanwendungskonfiguration für EMR Serverless

Konfigurieren Sie die Spark-Log4j2-Eigenschaften für Amazon EMR Serverless

Mit den Amazon EMR-Versionen 6.8.0 und höher können Sie die Eigenschaften von Apache Log4j 2.x anpassen, um feinkörnige Protokollkonfigurationen zu spezifizieren. Dies vereinfacht die Fehlerbehebung Ihrer Spark-Jobs auf EMR Serverless. Verwenden Sie die Klassifizierungen spark-driver-log4j2 undspark-executor-log4j2, um diese Eigenschaften zu konfigurieren.

Log4j2-Klassifizierungen für Spark

Verwenden Sie die folgenden Klassifizierungen mit, um die Spark-Log-Konfigurationen anzupassen. applicationConfiguration Verwenden Sie Folgendes, um die Log4j 2.x-Eigenschaften zu konfigurieren. properties

spark-driver-log4j2

Diese Klassifizierung legt die Werte in der log4j2.properties Datei für den Treiber fest.

spark-executor-log4j2

Diese Klassifizierung legt die Werte in der log4j2.properties Datei für den Executor fest.

Log4j2-Konfigurationsbeispiel für Spark

Das folgende Beispiel zeigt, wie Sie einen Spark-Job einreichen, applicationConfiguration um die Log4j2-Konfigurationen für den Spark-Treiber und den Executor anzupassen.

Informationen zur Konfiguration von Log4J-Klassifizierungen auf Anwendungsebene statt beim Senden des Jobs finden Sie unter. Standardanwendungskonfiguration für 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 in Spark-Beispielaufträgen

Die folgenden Codebeispiele zeigen, wie Sie eine Spark-Anwendung erstellen, während Sie eine benutzerdefinierte Log4j2-Konfiguration für die Anwendung initialisieren.

Python
Beispiel- Verwendung von Log4j2 für einen Spark-Job mit 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()

Verwenden Sie die folgende Konfiguration, um Log4j2 für den Treiber anzupassen, wenn Sie einen Spark-Job ausführen:

{ "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", // only display Spark error logs "logger.PySparkApp.level": "info", "logger.PySparkApp.name": "PySparkApp" } }
Scala
Beispiel- Verwenden von Log4j2 für einen Spark-Job mit 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() } }

Verwenden Sie die folgende Konfiguration, um Log4j2 für den Treiber anzupassen, wenn Sie einen Spark-Job ausführen:

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

Überlegungen zu Log4j2 für Spark

Die folgenden Log4j2.x Eigenschaften sind für Spark-Prozesse nicht konfigurierbar:

  • rootLogger.appenderRef.stdout.ref

  • appender.console.type

  • appender.console.name

  • appender.console.target

  • appender.console.layout.type

  • appender.console.layout.pattern

Detaillierte Informationen zu den Log4j2.x Eigenschaften, die konfiguriert werden, finden Sie in der log4j2.properties.template Datei unter GitHub.