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

AWS Glue与Spark中spark.jars.packages配置未正常生效问题

解决Glue v4中Spark自动下载Snowflake依赖的问题

以下是针对问题的具体解决方案:

1. 匹配兼容的依赖版本

Glue v4基于Spark 3.3和Scala 2.12,你之前使用的spark-snowflake_2.12:2.9.0-spark_3.1是适配Spark 3.1的版本,版本不兼容会导致依赖加载失败。请替换为适配Spark 3.3的版本,推荐使用:
net.snowflake:snowflake-jdbc:3.13.29,net.snowflake:spark-snowflake_2.12:2.12.0-spark_3.3

2. 正确配置Glue作业的Spark属性

在Glue作业的配置页面,找到Spark属性区域,添加以下配置:

spark.jars.packages=net.snowflake:snowflake-jdbc:3.13.29,net.snowflake:spark-snowflake_2.12:2.12.0-spark_3.3

注意直接以key=value的形式配置,不要用括号包裹。

3. 确保作业具备必要的权限

  • 网络权限:如果Glue作业运行在私有VPC中,需确保VPC配置了NAT网关,安全组允许出站访问443端口(用于连接Maven中央仓库下载依赖)。
  • S3权限:Glue作业的IAM角色需要具备访问Glue临时S3存储桶的权限(默认是aws-glue-*前缀的桶),依赖下载后会临时存储在这里。

4. 显式指定数据源格式(可选)

在Spark代码中读取Snowflake数据时,显式指定格式类,避免自动识别失败:

sf_options = {
    "sfURL": "<你的Snowflake URL>",
    "sfUser": "<用户名>",
    "sfPassword": "<密码>",
    "sfDatabase": "<数据库>",
    "sfSchema": "<Schema>",
    "sfWarehouse": "<仓库>"
}

df = spark.read.format("net.snowflake.spark.snowflake") \
    .options(**sf_options) \
    .option("dbtable", "<表名>") \
    .load()

5. 清理缓存(若之前手动上传过JAR)

如果之前手动上传过Snowflake的JAR包到Glue依赖库,可能存在缓存冲突。请删除相关手动上传的JAR,再重新运行作业。

内容的提问来源于stack exchange,提问作者Sergi Garriga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:04:52