#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.