View a markdown version of this page

Konfigurasikan properti Apache Log4j2 untuk Amazon EMR Serverless - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan properti Apache Log4j2 untuk Amazon EMR Serverless

Halaman ini menjelaskan cara mengonfigurasi properti Apache Log4j 2.x kustom untuk pekerjaan EMR Serverless di. StartJobRun Jika Anda ingin mengkonfigurasi klasifikasi Log4j di tingkat aplikasi, lihat. Konfigurasi aplikasi default untuk EMR Tanpa Server

Konfigurasikan properti Spark Log4j2 untuk Amazon EMR Serverless

Dengan Amazon EMR rilis 6.8.0 dan yang lebih tinggi, Anda dapat menyesuaikan properti Apache Log4j 2.x untuk menentukan konfigurasi log berbu tir halus. Ini menyederhanakan pemecahan masalah pekerjaan Spark Anda di EMR Serverless. Untuk mengkonfigurasi properti ini, gunakan spark-executor-log4j2 klasifikasi spark-driver-log4j2 dan.

Klasifikasi Log4j2 untuk Spark

Untuk menyesuaikan konfigurasi log Spark, gunakan klasifikasi berikut dengan applicationConfiguration. Untuk mengkonfigurasi properti Log4j 2.x, gunakan yang berikut ini. properties

spark-driver-log4j2

Klasifikasi ini menetapkan nilai dalam log4j2.properties file untuk driver.

spark-executor-log4j2

Klasifikasi ini menetapkan nilai-nilai dalam log4j2.properties file untuk pelaksana.

Contoh konfigurasi Log4j2 untuk Spark

Contoh berikut menunjukkan cara mengirimkan pekerjaan Spark dengan applicationConfiguration menyesuaikan konfigurasi Log4j2 untuk driver dan pelaksana Spark.

Untuk mengkonfigurasi klasifikasi Log4j di tingkat aplikasi alih-alih saat Anda mengirimkan pekerjaan, lihat. Konfigurasi aplikasi default untuk EMR Tanpa Server

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 dalam contoh pekerjaan Spark

Contoh kode berikut menunjukkan cara membuat aplikasi Spark saat Anda menginisialisasi konfigurasi Log4j2 kustom untuk aplikasi.

Python
contoh- Menggunakan Log4j2 untuk pekerjaan Spark dengan 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()

Untuk menyesuaikan Log4j2 untuk driver saat Anda menjalankan tugas Spark, gunakan konfigurasi berikut:

{ "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", // only display Spark error logs "logger.PySparkApp.level": "info", "logger.PySparkApp.name": "PySparkApp" } }
Scala
contoh- Menggunakan Log4j2 untuk pekerjaan Spark dengan 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() } }

Untuk menyesuaikan Log4j2 untuk driver saat Anda menjalankan tugas Spark, gunakan konfigurasi berikut:

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

Pertimbangan Log4j2 untuk Spark

Pro Log4j2.x perti berikut tidak dapat dikonfigurasi untuk proses Spark:

  • rootLogger.appenderRef.stdout.ref

  • appender.console.type

  • appender.console.name

  • appender.console.target

  • appender.console.layout.type

  • appender.console.layout.pattern

Untuk informasi terperinci tentang Log4j2.x properti yang dikonfigurasi, lihat log4j2.properties.template file pada GitHub.