求GlueLogger类规格说明:Python Glue Spark作业日志集成问题
我们团队用Python开发Glue Spark作业时,发现通过以下代码获取的Glue Logger和纯Spark环境下的log4j logger类存在差异:
from awsglue.context import GlueContext from pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) logger = glueContext.get_logger() logger.info("info message") logger.warn("warn message") logger.error("error message")
例如调用logger.debug()或logger.fatal()时,会抛出“attribute not found”错误。目前我们正尝试将该日志器与现有代码的日志框架集成,急需获取它所支持的方法和属性的类规格说明。
我们无法访问AWS支持提交工单,已经尝试过溯源,但找不到aws-glue-libs调用的Java类com.amazonaws.services.glue.log.GlueLogger的源码和Jar包;研究aws-glue-libs Python库、分析aws-java-sdk-glue-1.12.128.jar也未定位到该类。
可行的解决办法
在Glue作业中直接探查日志器对象:在Glue作业里加入以下代码,打印日志器的所有公开属性和方法,快速获取支持的操作:
from awsglue.context import GlueContext from pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) logger = glueContext.get_logger() # 列出所有非私有属性/方法 print("Supported methods/properties:", [attr for attr in dir(logger) if not attr.startswith('_')]) # 查看类的继承层级 print("Class hierarchy:", type(logger).__mro__) # 查看已有方法的文档说明(如果存在) print("Info method doc:", logger.info.__doc__)运行作业后,就能从日志输出中得到该Logger支持的所有方法——根据实际使用经验,Glue Logger通常仅支持
info()、warn()、error()这三个核心日志方法,这也和你遇到的debug/fatal方法不存在的问题吻合。查阅AWS Glue官方开发指南的日志部分:虽然没有专门的Glue Logger类文档,但在AWS Glue作业开发的官方指南中,会明确说明日志的用法及支持的级别,从中可以推断出对应的方法。
分析aws-glue-libs的Python源码:找到本地或Glue环境中aws-glue-libs包的
awsglue/context.py文件,查看get_logger()方法的实现逻辑,它会展示Python端如何封装底层日志对象,进而推断出支持的方法集合。
内容的提问来源于stack exchange,提问作者Niels Albers

