我的 AWS Glue 任务在 Amazon CloudWatch 中生成了太多日志。我想减少生成的日志数量。
解决方法
使用 AWS Glue-Spark ETL 任务,您无法控制运行 AWS Glue 作业的实例生成的日志的详细程度。这些日志非常详细,因此可以用来监控内部故障并帮助诊断任务故障。但是,您可以按照此处介绍的步骤来定义 Spark 日志记录级别。
选择连续日志记录的标准筛选条件设置
如果已为任务启用连续日志记录,请为日志筛选条件选择标准筛选条件选项。此筛选条件可以帮助您删除无用的 Apache Spark 驱动程序/执行程序和 Apache Hadoop YARN 心跳日志消息。要更改 AWS Glue 任务的日志筛选条件设置,请执行以下操作:
- 打开 AWS Glue 控制台。
- 在导航窗格中,选择任务。
- 选择要更新的任务。
- 选择操作,然后选择编辑任务。
- 展开监控选项部分。
- 选择连续日志记录。
- 在日志筛选条件下,选择标准筛选条件。
- 选择保存。
要从 AWS Command Line Interface (AWS CLI) 更改此设置,请使用以下命令:
'--enable-continuous-cloudwatch-log': 'true'
'--enable-continuous-log-filter': 'true'
注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
有关更多信息,请参阅启用 AWS Glue 任务的连续日志记录。
**重要提示:**即使采用标准筛选条件设置,Spark 任务的应用程序主日志仍会推送到 /aws-glue/jobs/output 和 /aws-glue/jobs/error log 组。
使用 Spark 上下文方法 setLogLevel 设置日志记录级别
可以使用 pyspark.context.SparkContext 的 setLogLevel 方法设置任务的日志记录级别。有效的日志记录级别包括全部、调试、错误、致命、信息、关闭、跟踪和警告。有关更多信息,请参阅适用于 setLogLevel 的 Spark 文档。
使用以下代码导入 Spark 上下文方法并设置任务的日志记录级别:
from pyspark.context import SparkContext
sc = SparkContext()
sc.setLogLevel("new-log-level")
**注意:**请务必将 new-log-level 替换为要为任务设置的日志级别。
有关更多信息,请参阅适用于配置日志记录的 Spark 文档。
使用自定义 log4j.properties 文件定义日志记录级别
Spark 使用 log4j 配置进行日志记录。您可以在 log4j.properties 文件中包含日志首选项,将该文件上载到 Amazon Simple Storage Service (Amazon S3),然后在 AWS Glue 任务中使用该文件。
要在任务中引用 Amazon S3 文件,请执行以下操作:
- 打开 AWS Glue 控制台。
- 在导航窗格中,选择任务。
- 选择要引用文件的任务。
- 选择 Actions(操作),然后选择 Edit job(编辑任务)。
- 展开安全配置、脚本库和任务参数 (可选) 部分。
- 对于引用的文件路径,粘贴用于存储 log4j.properties 文件的完整 S3 路径。
有关更多信息,请参阅提供自己的自定义脚本。
相关信息
使用 Amazon CloudWatch 进行监控