我的 AWS Glue 作业在 Amazon CloudWatch 中生成的日志过多。我想减少生成的日志数量。
简短描述
AWS Glue Spark 提取/转换/加载 (ETL) 作业会生成大量日志,您可以使用这些日志来监控内部故障和诊断失败的作业。您无法控制 AWS Glue 作业在其实例上生成的日志数量,但您可以调整日志的详细程度。
要调整日志详细程度,请使用以下方法:
- 开启标准过滤器设置以进行连续的日志记录。
- 使用 Spark 上下文方法 setLogLevel。
- 使用自定义 log4j.properties 文件。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
开启标准过滤器设置以进行连续的日志记录
如果您已为作业启用连续日志记录,请为 Log filtering(日志筛选)选项启用 Standard(标准)筛选器。
要启用此筛选器,请使用 AWS CLI 添加以下作业参数:
'--enable-continuous-cloudwatch-log': 'true''--enable-continuous-log-filter': 'true'
**注意:**AWS Glue 持续日志记录仅在 AWS Glue 4.0 及更早版本中可用。
使用 Spark 上下文方法 setLogLevel
您可以使用 pyspark.context.SparkContext 中的 setLogLevel 方法来设置作业的日志记录级别。有效的日志记录级别包括 ALL、DEBUG、ERROR、FATAL、INFO、OFF、TRACE 和 WARN。有关详细信息,请参阅 Apache Spark 网站上的 setLogLevel。
要导入 Spark 上下文方法并设置日志记录级别,请将以下代码添加到您的 AWS Glue 作业中:
from pyspark.context import SparkContext
sc = SparkContext()
sc.setLogLevel("new-log-level")
**注意:**将 new-log-level 替换为新的日志记录级别。此代码会影响驱动程序日志行为,但不会更改执行程序日志。
有关详细信息,请参阅 Apache Spark 网站上的 Configuring logging(配置日志记录)。
使用自定义 log4j.properties 文件
AWS Glue 3.0 将 Log4j 1 用于日志记录行为,您可以使用 log4j.properties 文件自定义这些行为。AWS Glue 4.0 将 Log4j 2 用于日志记录行为,您可以使用 log4j2.properties 文件自定义这些行为。有关 Log4j 2 的详细信息,请参阅 Apache 日志记录服务网站上的 Configuration properties(配置属性)。
**注意:**如果您应用自定义 log4j.properties 或 log4j2.properties 配置文件,则 AWS Glue 会关闭连续日志记录。此外,自定义 Log4j 属性仅在 AWS Glue 4.0 及更早版本中可用。
您可以在 log4j2.properties 文件中加入您的日志记录首选项。然后,您可以将文件上传到 Amazon Simple Storage Service (Amazon S3),并在 AWS Glue 作业中使用该文件。
要在 AWS Glue 4.0 中使用自定义配置文件,请完成以下步骤:
-
创建名为 log4j2.properties 的文件以将根记录器级别设置为 error(错误)。
log4j2.properties 文件示例:
rootLogger.level = error
rootLogger.appenderRef.stdout.ref = STDOUT
appender.console.type = Console
appender.console.name = STDOUT
appender.console.target = SYSTEM_ERR
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %p [%t] %c{2} (%F:%M(%L)): %m%n
-
将 log4j2.properties 文件上传到 Amazon S3 并复制该文件的 S3 URI。
-
在 AWS Glue 作业中,添加以下参数:
--extra-files, s3://[objectpath]/log4j2.properties
**注意:**将 s3://[objectpath]/log4j.properties 替换为您在前面的步骤中使用的 S3 URI。
-
保存 AWS Glue 作业并运行它。
-
检查 /aws-glue/jobs/error 日志组中的相关日志流。
相关信息
使用 Amazon CloudWatch 监控