Не удается загрузить на этап Snowflake с помощью Talend, ошибка nosuchmetoderror

#java #snowflake-cloud-data-platform #talend #nosuchmethoderror

#java #snowflake-cloud-data-platform #talend #ошибка nosuchmethoderror

Вопрос:

Я использую Talend для создания файла, а затем загружаю его на этап Snowflake перед заполнением базы данных. Я успешно подключаюсь, но эта ошибка генерируется при попытке ПОМЕСТИТЬ файл:

 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, но я могу ошибаться и не знаю, как это исправить, даже если я прав. Как я могу исправить эту ошибку?

Комментарии:

1. Используете ли вы последнюю версию драйвера Snowflake JDBC и правильный ли у вас путь к файлам .jar? Или ваш Talend поставляется с фиксированным драйвером JDBC (и, возможно, вы можете обновить свой Talend для обновления драйвера)? Насколько я помню, в версиях JDBC 3.11 были некоторые проблемы, поэтому я рекомендую перейти к последней версии 3.12 и установить любые переменные пути к классу.

2. Используете ли вы конкретные компоненты Snowflake в Talend или общие компоненты JDBC?

Ответ №1:

Вероятно, у вас есть две или более версии Avro jars в вашем пути к классу, и загруженная версия слишком старая и не имеет реализованного LogicalType. Похоже, что логические типы появились примерно в версии Avro v1.8.0.

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