如何减少 AWS Glue 任务生成的日志数量?

上次更新日期:2021 年 7 月 29 日

我的 AWS Glue 任务在 Amazon CloudWatch 中生成了太多日志。我想减少生成的日志数量。

解决方法

使用 AWS Glue-Spark ETL 任务,您无法控制运行 AWS Glue 作业的实例生成的日志的详细程度。这些日志非常详细,因此可以用来监控内部故障并帮助诊断任务故障。但是,您可以通过执行以下操作来定义 Spark 日志记录级别:

选择连续日志记录的标准筛选条件设置

如果已为任务启用连续日志记录,请为日志筛选条件选择标准筛选条件选项。此筛选条件可以帮助您删除无用的 Apache Spark 驱动程序/执行程序和 Apache Hadoop YARN 心跳日志消息。要更改 AWS Glue 任务的日志筛选条件设置,请执行以下操作:

  1. 打开 AWS Glue 控制台
  2. 在导航窗格中,选择任务
  3. 选择要更新的任务。
  4. 选择操作,然后选择编辑任务
  5. 展开监控选项部分。
  6. 选择连续日志记录
  7. 日志筛选条件下,选择标准筛选条件
  8. 选择保存

要从 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.SparkContextsetLogLevel 方法设置任务的日志记录级别。有效的日志记录级别包括全部、调试、错误、致命、信息、关闭、跟踪和警告。有关更多信息,请参阅适用于 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 文件,请执行以下操作:

  1. 打开 AWS Glue 控制台
  2. 在导航窗格中,选择任务
  3. 选择要引用文件的任务。
  4. 选择 Actions(操作),然后选择 Edit job(编辑任务)。
  5. 展开安全配置、脚本库和任务参数 (可选) 部分。
  6. 对于引用的文件路径,粘贴用于存储 lo4j.properties 文件的完整 S3 路径。

有关更多信息,请参阅提供自己的自定义脚本

有关 log4j.properties 文件示例,请参阅 Apache Spark 的 GitHub 存储库中的 log4j.properties.template


这篇文章对您有帮助吗?


您是否需要账单或技术支持?