Зависимости Java в Pig UDF

Я написал UDF, который использует Joda Time. Я включил его как зависимость в pom.xml. Когда я запускаю скрипт свиньи, я получаю сообщение об ошибке

ERROR 2998: Unhandled internal error. org.joda.time.LocalDate.parse(Ljava/lang/String;)Lorg/joda/time/LocalDate;

Я новичок в java, maven и hadoop. Как я могу связать joda в свою банку (например, статическую ссылку в c/c++), которую я запускаю в кластере?

Это НЕ дубликат как включить внешний файл jar с использованием PIG, поскольку я не могу использовать параметр -D, а регистрация Joda Time в сценарии свиньи не имеет никакого эффекта.


person ManuelSchneid3r    schedule 27.06.2015    source источник
comment
возможный дубликат как включить внешний файл jar с помощью PIG   -  person NotGaeL    schedule 27.06.2015
comment
Нет, мой UDF включен и работает.   -  person ManuelSchneid3r    schedule 27.06.2015
comment
ваш код генерирует исключение java.lang.NoClassDefFoundError. Найдите недостающую банку (joda-time), а затем включите ее в качестве зависимости времени выполнения от вашего сценария свиньи.   -  person NotGaeL    schedule 27.06.2015
comment
@elcodedocle Параметр -D не принимается на моем компьютере (0.13).   -  person ManuelSchneid3r    schedule 27.06.2015
comment
Явный случай Stackoverflowitis. Вниз и близкое голосование, высокомерно игнорируя содержание вопроса, ссылаясь на другой, по-видимому, дублирующий квест, содержащий некоторые похожие слова. Спасибо, Фред, за то, что действительно прочитали вопрос.   -  person ManuelSchneid3r    schedule 28.06.2015
comment
Близкое голосование - это не высокомерие, это эй, смотри, я нашел здесь очень похожий вопрос! Как и мое предложение, которое было неправильным, но более чем разумным. Я пытаюсь помочь вам, вы жалуетесь. Это грубо, чувак. Также No my UDF включен и работает. является бессвязным ответом на мое повторяющееся предложение. регистрация Joda Time в скрипте свиньи не имеет никакого эффекта, имеет больше смысла, и, конечно, я бы отказался от своего дубликата голосования после его прочтения, но я не слежу 24 часа, чтобы отслеживать и отвечать на ваш вопрос и не знаю все о вашей проблеме (вот почему вам нужно 5 голосов, чтобы закрыть BTW).   -  person NotGaeL    schedule 29.06.2015
comment
Я должен сказать, что сожалею. Я не хотел обидеть, особенно вас. На меня повлияли последние несколько вопросов, которые я задал, когда люди молча проголосовали против. Я просто думаю, что люди инициируют закрытое голосование, основываясь на преждевременных решениях.   -  person ManuelSchneid3r    schedule 29.06.2015
comment
Окей круто. Я не минусовал вас или что-то еще, я просто подумал, что на ваш вопрос, возможно, уже был дан ответ, и хотел помочь. Я рад, что вы смогли решить свою проблему, и надеюсь, что в следующий раз смогу помочь больше :-)   -  person NotGaeL    schedule 29.06.2015


Ответы (1)


Проблема в том, что pig поставляется с Joda 1.6, где LocalDate не имеет метода parse(). Самым простым и безопасным решением было бы использовать 1.6 в maven и переписать свой код с помощью 1.6 Joda Time.

person Frederic    schedule 28.06.2015
comment
Какую версию свиньи вы имеете в виду? я попробую позже - person ManuelSchneid3r; 28.06.2015
comment
Тонны благодарностей. Я потратил около 20 часов, чтобы заставить это работать. Все советы в инете просто неверны. НЕТ необходимости передавать дополнительную банку, НЕТ необходимости регистрировать банку. Просто используйте правильный API. Вы могли бы уточнить, как UDF использует время joda от Pig, что до сих пор для меня загадка. (Исходя из С/С++) - person ManuelSchneid3r; 28.06.2015