У меня есть UDF, который я использую для выполнения пользовательской обработки записей. В функции eval я использую стороннюю банку для обработки. Я видел файл jar работы, но он не включает эту зависимость. Есть ли способ включить зависимую флягу в банку работы? (Для тестирования я запускаю кластер в локальном режиме).Добавление зависимых банок для UDF в PIG
Или я могу использовать распределенный кеш, чтобы сделать зависимую банку доступной для UDF?
Я пробовал регистрировать зависимые банки в свинье. Для первой зарегистрированной банки (все udfs связаны в этой банке), я не сталкиваюсь с проблемами. Но для второй банки я столкнулся с проблемами, когда UDF пытается получить доступ к классу из него.
REGISTER '/home/user/pig/udfrepository/projectUDF.jar'
REGISTER '/home/user/thridpartyjars/xyz.jar';
Бревна я получаю на консоли, как это:
2013-08-11 10:35:02,485 [Thread-14] WARN org.apache.hadoop.mapred.LocalJobRunner - job_local_0001 java.lang.NoSuchMethodError: org.xyz.abc.convertToOtherFormat(Lorg/DateTimeZone;)Lorg/DateTime; at com.myproject.MyUDF.exec(MyUDF.java:70)
Любая помощь по этому вопросу высоко ценится. Спасибо заранее.
насчет РЕЕСТРА ' 'файла: /// дома/пользователя/свинья/udfrepository/projectUDF.jar''? – Martias
Спасибо Винни, я пробовал этот путь, но не работает! –
Ну, я встречался с подобной проблемой при использовании Hive UDF, но не PIG. Возможно, вы ссылались на [книгу] (https://www.inkling.com/read/programming-pig-alan-gates-1st/chapter-5/user-defined-functions), правильно? – Martias