如何仅为 AWS Glue 脚本启用粘合日志记录

Posted

技术标签:

【中文标题】如何仅为 AWS Glue 脚本启用粘合日志记录【英文标题】:How to enable glue logging for AWS Glue script only 【发布时间】:2021-03-02 07:48:25 【问题描述】:

我正在努力为仅使用 PySpark 的 Glue 脚本启用调试日志记录。

我试过了:

import...

def quiet_logs(sc):
    logger = sc._jvm.org.apache.log4j
    logger.LogManager.getLogger("org").setLevel(logger.Level.ERROR)
    logger.LogManager.getLogger("akka").setLevel(logger.Level.ERROR)


def main():

    # Get the Spark Context
    sc = SparkContext.getOrCreate()
    sc.setLogLevel("DEBUG")
    quiet_logs(sc)

    context = GlueContext(sc)
    logger = context.get_logger()

    logger.debug("I only want to see this..., and for all others, only ERRORS")
    ...

我已将“--enable-continuous-cloudwatch-log”设置为 true,但根本无法获取日志跟踪以仅为我自己的脚本编写调试消息。

【问题讨论】:

【参考方案1】:

我还没有完全按照您的要求做,但我可以通过设置一个单独的自定义日志来做类似的事情,这可能会实现您所追求的。

import os
from watchtower import CloudWatchLogHandler
import logging


args = getResolvedOptions(sys.argv,["JOB_RUN_ID"])

job_run_id = args["JOB_RUN_ID"]

os.environ["AWS_DEFAULT_REGION"] = "eu-west-1"
lsn = f"job_run_id_custom"
cw = CloudWatchLogHandler(
    log_group="/aws-glue/jobs/logs-v2", stream_name=lsn, send_interval=4
)
slog = logging.getLogger()
slog.setLevel(logging.DEBUG)
slog.handlers = []
slog.addHandler(cw)
slog.info("hello from the custom logger")

现在您登录到 slog 的任何内容都将进入一个单独的记录器,可作为“输出”日志中的条目之一访问

请注意,当您运行胶水作业时,您需要将瞭望塔作为--additional-python-modules 包含在内

更多信息here

【讨论】:

以上是关于如何仅为 AWS Glue 脚本启用粘合日志记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AWS java SDK 使用 AWS 粘合作业生成自动脚本

查找或恢复已删除的 AWS 粘合作业

AWS Glue 作业生命周期 - 笔记本到作业

无法对 AWS Glue 作业脚本中的两个表进行连接和查询

从 AWS Redshift 到 S3 的 AWS Glue ETL 作业失败

如何仅为应用程序控制器启用日志记录调试级别?