Я пытаюсь написать UDF для Hadoop Hive, который анализирует User Agents. Следующий код работает отлично на моей локальной машине, но на Hadoop я получаю:Hadoop Hive UDF с внешней библиотекой
org.apache.hadoop.hive.ql.metadata.HiveException: Невозможно выполнить метод общественного java.lang.String MyUDF .evaluate (java.lang.String) throws org.apache.hadoop.hive.ql.metadata.HiveException на объекте MyUDF @ 64ca8bfb класса MyUDF с аргументами {Все занятия: java.lang.String} размера 1 ',
Код:
import java.io.IOException;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.*;
import com.decibel.uasparser.OnlineUpdater;
import com.decibel.uasparser.UASparser;
import com.decibel.uasparser.UserAgentInfo;
public class MyUDF extends UDF {
public String evaluate(String i) {
UASparser parser = null;
parser = new UASparser();
String key = "";
OnlineUpdater update = new OnlineUpdater(parser, key);
UserAgentInfo info = null;
info = parser.parse(i);
return info.getDeviceType();
}
}
Факты, которые приходят на мой взгляд, я должен упомянуть:
Я компиляция с Eclipse, с «экспортом работоспособной банкой файлом» и вытяжными необходимыми библиотеками в опционную генерироваться банкой
Я загрузив этот файл «жир банки» с Hue
Минимальный рабочий пример мне удалось бежать:
public String evaluate(String i) { return "hello" + i.toString()"; }
Я предполагаю, что проблема л где-то вокруг этой библиотеки (скачан с https://udger.com) Я использую, но я понятия не имею, где.
Любые предложения?
Thanks, Michal
Вы просмотрели журналы YARN для 'application_xxxx_xxxx' (как сообщается Hive), чтобы проверить некоторые подсказки, например. некоторые внутренние исключения из вашего JAR, скомпилированные с версией Java, которая более поздняя, чем JRE, используемая Hive (только пример)? –