无法使用 Talend 上传到 Snowflake 阶段,NoSuchMethodError

Posted

技术标签:

【中文标题】无法使用 Talend 上传到 Snowflake 阶段,NoSuchMethodError【英文标题】:Cannot upload to Snowflake stage using Talend, NoSuchMethodError 【发布时间】:2021-01-29 20:38:17 【问题描述】:

我正在使用 Talend 创建一个文件,然后在填充数据库之前将其上传到 Snowflake 阶段。 我连接成功,但是当我尝试 PUT 文件时会产生这个错误:

Exception in thread "Thread-2" java.lang.NoSuchMethodError: org.apache.avro.Schema.getLogicalType()Lorg/apache/avro/LogicalType;
    at org.talend.daikon.avro.LogicalTypeUtils.isLogicalDate(LogicalTypeUtils.java:74)
    at org.talend.codegen.enforcer.IncomingSchemaEnforcer.put(IncomingSchemaEnforcer.java:446)
    at org.talend.codegen.enforcer.IncomingSchemaEnforcer.put(IncomingSchemaEnforcer.java:379)

我最好的猜测是 Talend 中使用的类与 Snowflake 中使用的类不匹配,但我可能错了,即使我是对的也不知道如何解决它。我该如何解决这个错误?

【问题讨论】:

您使用的是最新的 Snowflake JDBC 驱动程序吗?您的 .jar 文件路径是否正确?或者您的 Talend 是否带有固定的 JDBC 驱动程序(也许您可以升级您的 Talend 以升级驱动程序)?如果我记得 JDBC 的 3.11 版本有一些问题,所以我建议跳到最新的 3.12 并设置任何类路径变量。 您使用的是 Talend 中的特定 Snowflake 组件还是通用 JDBC 组件? 【参考方案1】:

您的类路径中可能有两个或多个版本的 Avro jar,并且加载的版本太旧并且没有实现 LogicalType。看起来逻辑类型是在 Avro v1.8.0 前后出现的。

https://issues.apache.org/jira/browse/AVRO-1497

【讨论】:

以上是关于无法使用 Talend 上传到 Snowflake 阶段,NoSuchMethodError的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Talend tREST 上传文件?

雪花 - 无法将暂存区域中的 JSON 拆分文件复制到表中

无法将数据从 Snowflake 复制到 Azure Blob

无法使用 Talend 连接到 Access 2007 数据库

talend 地理空间组件的集成

tCosmosDBConnection 组件未在 Talend Open Studio for Data Integration 中显示