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

使用自定义JDBC连接器连接AWS Glue与Snowflake时遇驱动错误求助

问题描述

通过AWS Glue自定义JDBC连接器对接Snowflake,运行作业调用toDF()将Dynamic Frame转为PySpark DataFrame时触发错误:

File "/tmp/Snowflake_Test_Job.py", line 22, in <module>
df1 = Snowflake_New_Connector_node1.toDF()
File "/opt/amazon/lib/python3.7/site-packages/awsglue/dynamicframe.py", line 147, in toDF
return DataFrame(self._jdf.toDF(self.glue_ctx._jvm.PythonUtils.toSeq(scala_options)), self.glue_ctx)
File "/opt/amazon/spark/python/lib/py4j-0.10.9.5-src.zip/py4j/java_gateway.py", line 1321, in __call__
return_value = get_return_value(
File "/opt/amazon/lib/python3.7/site-packages/pyspark/sql/utils.py", line 190, in deco
return f(*a, **kw)
File "/opt/amazon/spark/python/lib/py4j-0.10.9.5-src.zip/py4j/protocol.py", line 326, in get_return_value
raise Py4JJavaError(
py4j.protocol.Py4JJavaError: An error occurred while calling o95.toDF.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 3) (179.39.34.49 executor 2): org.apache.spark.util.TaskCompletionListenerException: null
Previous exception in task: Glue ETL Marketplace: JDBC driver failure, driverClassName: net.snowflake.client.jdbc.SnowflakeDriver, error message: No suitable driver found for rendered JDBC URL

已确认JDBC URL符合Snowflake官方规范,尝试更换不同版本snowflake-jdbc包、通过代码创建连接均无效,需解决Snowflake查询正常执行的问题。

解决方案

以下是经过验证的解决步骤,按优先级尝试:

1. 改用AWS Glue官方Snowflake连接器

放弃自定义JDBC连接器,直接使用AWS Marketplace提供的官方Snowflake连接器:

  • 在Glue控制台的"连接"页面,选择"创建连接",类型选"Snowflake"
  • 配置必填参数:账户名(格式<account_identifier>.snowflakecomputing.com)、用户名、密码、仓库、数据库、Schema
  • 作业中直接引用该连接,无需手动管理JDBC驱动包,官方连接器会自动处理依赖和URL渲染

2. 确保JDBC驱动包在所有Executor上可用

如果坚持使用自定义JDBC连接器,需保证驱动包能被Glue的Driver和所有Executor加载:

  • 将snowflake-jdbc-3.13.22.jar上传到S3存储桶(如s3://your-glue-jars/snowflake/)
  • 在Glue作业配置的Job parameters中添加:
    --extra-jars s3://your-glue-jars/snowflake/snowflake-jdbc-3.13.22.jar
    --conf spark.driver.extraClassPath=s3://your-glue-jars/snowflake/snowflake-jdbc-3.13.22.jar
    --conf spark.executor.extraClassPath=s3://your-glue-jars/snowflake/snowflake-jdbc-3.13.22.jar
    
  • 注意:Glue作业的IAM角色必须有该S3路径的GetObject权限

3. 验证JDBC URL的渲染逻辑

自定义连接器的URL模板可能存在拼接错误,检查以下点:

  • 确保URL模板为标准Snowflake格式:jdbc:snowflake://${account}.snowflakecomputing.com/?warehouse=${warehouse}&db=${database}&schema=${schema}
  • 连接器配置中所有变量(如account、warehouse)都已正确赋值,无空值或格式错误
  • 手动拼接URL并在本地测试,确认能正常连接Snowflake

4. 检查Glue作业的网络配置

如果Glue作业运行在VPC内,需确保:

  • VPC的安全组和网络ACL允许出站访问Snowflake的端口(443)
  • 已配置Snowflake的网络规则,允许Glue作业所在VPC的IP段访问
  • 若使用私有网络,需配置VPC端点或NAT网关打通网络

5. 升级JDBC驱动包版本

尝试使用较新的Snowflake JDBC驱动包(如4.x版本),旧版本可能存在兼容性问题:

  • 下载最新稳定版驱动包,上传到S3后重复步骤2的配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:20:25