You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Glue调用XSDToSchema报错:'JavaPackage'对象不可调用

解决AWS Glue中使用XSDToSchema出现'JavaPackage' object is not callable错误

错误原因

这个错误核心原因是AWS Glue运行环境未包含databricks spark-xml依赖包,或依赖包版本与Glue内置的Spark版本不兼容。本地运行正常是因为你已手动配置好对应依赖,而Glue默认不预装该库。

解决方案

1. 匹配兼容的依赖版本

根据Glue版本选择对应spark-xml包:

  • Glue 3.0(基于Spark 3.1):使用com.databricks:spark-xml_2.12:0.15.0
  • Glue 4.0(基于Spark 3.3):使用com.databricks:spark-xml_2.12:0.16.0

2. 在Glue作业中添加依赖

有两种常用方式引入依赖:

  • 方式一:通过作业参数指定Extra JARs

    1. 将对应版本的spark-xml jar包上传到S3存储桶(示例路径:s3://your-glue-deps/spark-xml_2.12-0.15.0.jar)
    2. 编辑Glue作业,在"作业参数"中添加键值对:
      • 键:--extra-jars
      • 值:s3://your-glue-deps/spark-xml_2.12-0.15.0.jar
  • 方式二:通过Maven坐标添加依赖
    编辑Glue作业,在"依赖项"->"Python库路径或Maven坐标"中输入对应Maven坐标,比如com.databricks:spark-xml_2.12:0.15.0

3. 调整XSD文件读取逻辑

Glue作业的本地文件系统为临时环境,直接用open读取本地文件会找不到路径,需改为从S3读取:

import boto3

# 从S3读取XSD内容
s3_client = boto3.client('s3')
xsd_obj = s3_client.get_object(Bucket='your-bucket', Key='path/to/example_xsd.xsd')
xml_schema = xsd_obj['Body'].read().decode('utf-8')

# 调用XSDToSchema生成Schema
a = spark._jvm.com.databricks.spark.xml.util.XSDToSchema.read(xml_schema)

4. 验证依赖加载状态

可先打印类信息确认依赖是否加载成功:

print(spark._jvm.com.databricks.spark.xml.util.XSDToSchema)

若输出为class com.databricks.spark.xml.util.XSDToSchema说明加载成功;若仍显示JavaPackage,需检查依赖路径或版本是否匹配。

内容的提问来源于stack exchange,提问作者The Vinh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:02:12