внимательно прочитайте следующий материал.
Вызов пользовательских функций из Свиньи:
Pig обеспечивает возможность вызова пользовательских функций (UDF) внутри скриптов Pig. Вы можете сделать это, чтобы реализовать пользовательскую обработку для использования в сценариях Pig. В настоящее время поддерживаются языки Java, Python/Jython и JavaScript. (Хотя поддержка JavaScript все еще экспериментальна.)
В следующих разделах описывается, как зарегистрировать свои функции с помощью Pig, чтобы вы могли называть их либо из оболочки Pig, либо из сценариев Pig. Для получения дополнительной информации об использовании UDF с Pig перейдите на страницу http://pig.apache.org/docs/r0.14.0/udf.html.
вызовов JAR-файлы из Свиньи:
Вы можете использовать пользовательские JAR-файлы с Pig с помощью команды REGISTER в свинью сценария. Файл JAR является локальной или удаленной файловой системой, такой как Amazon S3. Когда скрипт Pig запускается, Amazon EMR загружает JAR-файл автоматически на главный узел, а затем загружает JAR-файл в распределенный кеш Hadoop. Таким образом, файл JAR автоматически используется по мере необходимости всеми экземплярами кластера.
Чтобы использовать JAR-файлы с Свиньи
1.Upload пользовательский JAR файл в Amazon S3.
2.Используйте команду REGISTER в сценарии Pig, чтобы указать ведро на Amazon S3 пользовательского JAR-файла.
REGISTER s3://mybucket/path/mycustomjar.jar;
вызова Python/Jython скрипты от свинки
Вы можете зарегистрировать скрипты Python с Свиньи, а затем вызывать функции в этих сценариях из оболочки свиньи или в скрипте Pig. Вы делаете это, указав местоположение скрипта с ключевым словом register.
Поскольку Pig написан на Java, он использует механизм сценария Jython для синтаксического анализа скриптов Python. Для получения дополнительной информации о Jython перейдите на страницу http://www.jython.org/.
Для вызова сценария Python/Jython из Свиньи
1.Write Питона скрипт и загрузить скрипт в папку в Amazon S3. Это должно быть ведро, принадлежащее той же учетной записи, которая создает кластер Pig или у которого есть разрешения, поэтому учетная запись, созданная кластером, может получить к ней доступ.В этом примере сценарий загружается в
s3://mybucket/pig/python.
2.Начать кластер свиней. Если вы будете получать доступ к Pig из оболочки Grunt, запустите интерактивный кластер. Если вы используете команды Pig из сценария, запустите скриптовый кластер Pig. В этом примере мы начнем интерактивный кластер.
3.Потому что мы запустили интерактивный кластер, теперь мы будем использовать SSH в главном узле, где мы можем запустить оболочку Grunt. Для получения дополнительной информации о том, как SSH в главном узле, см. SSH в главный узел.
4. Запустите оболочку Grunt для Pig, набрав свинью в командной строке.
pig
5.Register библиотеки Jython и ваш сценарий Python с Pig, используя ключевое слово регистра на Грунта командной строки, как показано в следующем, где бы вы указать местоположение вашего скрипта в Amazon S3.
grunt> register 'lib/jython.jar';
grunt> register 's3://mybucket/pig/python/myscript.py' using jython as myfunctions;
6.Загрузить входные данные. Следующий пример загружает данные из местоположения Amazon S3.
grunt> input = load 's3://mybucket/input/data.txt' using TextLoader as (line:chararray);
7.Вы можете теперь вызывать функции в своем скрипте изнутри Pig, ссылаясь на них, используя myfunctions.
grunt> output=foreach input generate myfunctions.myfunction($1);