使用Python运行Glue作业Relationalize数组与结构体数据遇Log4j问题求助
Glue执行Relationalize操作时Log4j提示的处理方案
首先明确:你贴出的这段日志是Log4j输出的INFO级普通提示,不是阻断作业运行、导致Relationalize转换失败的致命错误,绝大多数场景下该提示不会影响数组、结构体类型数据的关系化转换流程。
优先级最高的校验操作
- 先核对Relationalize的实际执行结果:检查作业日志中Relationalize阶段的输出统计,包括按默认规则生成的拆分列(如嵌套结构的
字段名.*、数组类型的字段名.pos列)、落盘/写表的数据行数,确认是否存在实际的转换失败。 - 如果校验下来数据写入正常、没有抛出
AnalysisException、JobFailed类的硬错误,直接忽略该日志提示即可,不需要做额外调整。
如需彻底消除该提示的可选操作
- 调整代码中的日志输出阈值:在Glue作业的代码初始化最前端,追加日志级别设置,过滤这类无关的INFO提示:
import logging # 屏蔽Log4j的Servlet环境探测提示 logging.getLogger("org.apache.log4j").setLevel(logging.ERROR) - 如确实碰到作业异常、怀疑和Log4j自动探测逻辑相关,在Glue作业的运行参数中追加Spark配置,跳过Log4j的Servlet环境检测分支:
--conf "spark.driver.extraJavaOptions=-Dlog4j.disableServletContext=true spark.executor.extraJavaOptions=-Dlog4j.disableServletContext=true" - 禁止操作:不要为了消提示手动上传log4j-web依赖包,Glue托管运行环境已预置适配Spark on YARN的Log4j配置,手动引入web场景的jar包反而可能触发类加载冲突,导致作业启动失败。
内容的提问来源于stack exchange,提问作者Parag Shahade
相关产品推荐
相关产品推荐

