如何仅为 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 粘合作业生成自动脚本