как вызвать сценарий свиньи в другом сценарии свиньи - PullRequest
4 голосов
/ 26 сентября 2011

У меня есть файл в формате hdf с 100 столбцами, который я хочу обработать, используя pig. Я хочу загрузить этот файл в кортеж с именами столбцов в отдельном сценарии PIG и использовать этот сценарий из других сценариев PIG. Как мне это сделать?

Скажите, что этот сценарий со 100 колонками - 100col.pig. Как мне позвонить с другого one.pig?

Ответы [ 4 ]

5 голосов
/ 26 сентября 2011

Отметьте команду exec (для пакетной обработки) или команду run (для интерактивных сценариев).Также, если вам нужно использовать (не grunt) команды оболочки, проверьте команду fs.Вот хорошая ссылка:

http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html

3 голосов
/ 27 октября 2011

Вы должны попробовать использовать макросы, которые присутствуют в версии 0.9.

http://pig.apache.org/docs/r0.9.1/cont.html#macros

2 голосов
/ 19 октября 2014

Уже немного поздно для этого ответа, но я недавно работал над этим требованием и почти ничего не нашел, пока не нашел это, надеюсь, это поможет кому-то нуждающемуся:

** Этот отрывок взятиз Programming Pig book.

Долгое время в Pig Latin весь сценарий должен был находиться в одном файле.Это привело к появлению довольно неприятных латинских сценариев Pig на несколько тысяч строк.Начиная с 0.9, препроцессор можно использовать для включения одного сценария Pig Latin в другой.Взятые вместе с макросами, теперь можно писать модульную Pig Latin, которую легче отлаживать и использовать повторно: импорт используется для включения одного сценария Pig Latin в другой:

- main.pig

import '../examples/ch6/dividend_analysis.pig';
daily = load 'NYSE_daily' as (exchange:chararray, symbol:chararray,
date:chararray, open:float, high:float, low:float, close:float,
volume:int, adj_close:float);
results = dividend_analysis(daily, '2009', 'symbol', 'open', 'close');

import записывает импортированный файл непосредственно в скрипт Pig Latin вместо оператора import.В предыдущем примере содержимое файла divnd_analysis.pig будет размещено непосредственно перед оператором загрузки.Обратите внимание, что файл не может быть импортирован дважды.Если вы хотите использовать одну и ту же функцию несколько раз, вы должны написать ее как макрос и импортировать файл с этим макросом.

1 голос
/ 03 июня 2014

Здесь есть 2 варианта, как указано выше. Свинья дает команды run и exec для решения ваших требований.

Команда exec предназначена для вызова сценария PIG, который является независимым и запускается автономно. Команда run предназначена для запуска pigscipt и сохранения его переменных и псевдонимов.

Полагаю, вам нужно проверить команду запуска, чтобы выполнить ваши требования. http://pig.apache.org/docs/r0.9.1/cmds.html#run

...