2013-08-13 3 views
3

У меня есть 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) 

Любая помощь по этому вопросу высоко ценится. Спасибо заранее.

+1

насчет РЕЕСТРА ' 'файла: /// дома/пользователя/свинья/udfrepository/projectUDF.jar''? – Martias

+0

Спасибо Винни, я пробовал этот путь, но не работает! –

+0

Ну, я встречался с подобной проблемой при использовании Hive UDF, но не PIG. Возможно, вы ссылались на [книгу] (https://www.inkling.com/read/programming-pig-alan-gates-1st/chapter-5/user-defined-functions), правильно? – Martias

ответ

Смежные вопросы