为 Amazon EMR Serverless 配置 Apache Log4j2 属性
本页面介绍了如何在 StartJobRun
中为 EMR Serverless 作业配置自定义 Apache Log4j 2.x
为 Amazon EMR Serverless 配置 Spark Log4j2 属性
在 Amazon EMR 6.8.0 及更高版本中,您可以自定义 Apache Log4j 2.xspark-driver-log4j2
和 spark-executor-log4j2
分类。
Spark 的 Log4j2 分类
要自定义 Spark 日志配置,请在 applicationConfiguration
中使用以下分类。要配置 Log4j 2.x 属性,请使用以下 properties
。
spark-driver-log4j2
-
该分类为驱动程序设置
log4j2.properties
文件中的值。 spark-executor-log4j2
-
该分类为执行程序设置
log4j2.properties
文件中的值。
Spark 的 Log4j2 配置示例
以下示例展示了如何向 applicationConfiguration
提交 Spark 作业,以便为 Spark 驱动程序和执行程序自定义 Log4j2 配置。
要在应用程序级别而不是在提交作业时配置 Log4j 分类,请参阅 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" } } ] }'
示例 Spark 作业中的 Log4j2
以下代码示例演示了如何在初始化应用程序的自定义 Log4j2 配置时创建 Spark 应用程序。
Spark 的 Log4j2 注意事项
以下 Log4j2.x 属性不可针对 Spark 进程进行配置:
-
rootLogger.appenderRef.stdout.ref
-
appender.console.type
-
appender.console.name
-
appender.console.target
-
appender.console.layout.type
-
appender.console.layout.pattern
有关可以配置的 Log4j2.x 属性的详细信息,请参阅 GitHub 上的 log4j2.properties.template
文件