встроенный hadoop-pig: как правильно использовать автоматический addContainedJar для пользовательских функций? - PullRequest
0 голосов
/ 26 декабря 2011

когда вы используете pigServer.registerFunction, вы не должны явно вызывать pigServer.registerJar, вместо этого вам нужно, чтобы pig автоматически обнаруживал jar с помощью jarManager.findConistingJar.

Однако у нас есть сложная UDF, класс которой зависит от других классов из нескольких jar.Поэтому мы создали jar-with-dependencies с помощью maven-assembly.Но это заставляет весь jar вводить pigContext.skipJars (так как он содержит сам pig.jar) и не отправляется на сервер hadoop: (

Какой правильный подход здесь? Нужно ли вручную вызывать registerJar для каждогокувшин, от которого мы зависим?

1 Ответ

0 голосов
/ 17 июня 2012

не уверен, что такое сертифицированный путь, но вот несколько указателей:

  • при использовании pigServer.registerFunction pig автоматически обнаруживает банку, в которой находятся файлы udf, и отправляет ее на jobTracker
  • pig также автоматически определяет jar-файл, содержащий класс PigMapReduce (JarManager.createJar), извлекает из него только классы, начинающиеся с org/apache/pig, org/antlr/runtime и т. Д., И отправляет их в JobTracker, а также
  • Итак, если ваш UDF находится в той же банке, что и PigMapReduce, то вы ввернуты, потому что он не будет отправлен
  • наш вывод: не используйте jar-with-зависимости

НТН

...