Talend Open Studio 8.0搭配Snowflake JDBC 3.13.1查询Snowflake数据库失败报错求助
看起来你遇到的是Talend 8.0和Snowflake JDBC 3.13.1之间的兼容性问题,核心是Java模块系统的权限限制以及Arrow数据传输格式的依赖冲突——毕竟在Talend 7.3+JDBC 3.11的组合下一切正常,说明新版本驱动和Talend 8.0的Java环境(大概率是Java 11+)不匹配。
给你几个可行的解决方向,按优先级试试:
调整JVM启动参数,解决模块权限问题
报错里的module java.base does not "opens java.net" to unnamed module和sun.misc.Unsafe不可用,都是Java 9+模块系统的访问限制导致的。你需要给Talend的JVM添加开放权限的参数:
找到Talend Open Studio的启动配置文件(Windows是TOS_DI-win-x86_64.ini,Linux/macOS是对应的.sh脚本),在-vmargs部分添加以下参数:--add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/sun.misc=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED保存后重启Talend,再测试查询。
禁用Snowflake JDBC的Arrow数据传输格式
报错追踪到了Arrow流读取的问题,这是Snowflake JDBC默认启用的高效传输格式,但和Talend 8.0的环境可能存在依赖冲突。你可以在Snowflake的连接URL里追加参数,强制关闭Arrow:
在Talend的tSnowFlakeInput组件的连接配置中,把URL改成类似:jdbc:snowflake://<account>.snowflakecomputing.com/?warehouse=<warehouse>&db=<db>&schema=<schema>&DISABLE_ARROW=true这样JDBC会用传统的结果集格式返回数据,避开Arrow相关的Netty依赖问题。
升级/降级Snowflake JDBC驱动版本
试试升级JDBC驱动到更适配Java 11+的版本(比如3.14.0及以上),Snowflake后续版本修复了不少Java模块相关的问题;如果升级不行,也可以暂时回退到3.11版本(毕竟Talend 7.3用这个版本没问题),看看Talend 8.0是否兼容这个旧驱动。确认Talend 8.0的Java运行环境
检查Talend 8.0使用的Java版本,确保它和Snowflake JDBC 3.13.1的兼容列表匹配——避免用了不兼容的Java版本(比如Java 17+搭配旧版JDBC)。
备注:内容来源于stack exchange,提问作者Rajesh

