2013-12-12 3 views
1

После некоторых нарезки и нарезки я получаю относительно небольшой набор данных, который я хочу обрабатывать в автономном режиме. Я в конечном итоге это пишу:Как автоматизировать экспорт данных в свинье?

store foo into 'foo' using PigStorage('\t'); 
copyToLocal foo foo; 
rm foo; 
sh cat foo/part* | sort -k... -o foo.tsv; 
sh rm -rf foo; 

Я хотел бы заменить эти 5 строк с макровызовым, но это не взгляда, как я могу - я получаю Unexpected character '|', когда я делаю.

Итак, можно ли повторять эти 5 строк несколько раз в каждом скрипте?

+0

Кстати, вам не нужно указывать «использование PigStorage ('\ t')». Он используется по умолчанию – Ruslan

ответ

1

Вы должны заключить команду оболочки с кавычками. Я точно не помню синтаксис. Что-то вроде:

sh bash "your commands" 

Если это не работает для вас, я думаю, что вы можете поместить свои команды в отдельном исполняемом файле оболочки и вызывать его из рис.

1

I cannot:

Команды оболочки (используется с Grunt) не поддерживаются.

нет даже copyToLocal представляется допустимым.

+0

А, я вижу. Похоже, вы ошибетесь. Эти команды оболочки были бы удобны при интерактивном взаимодействии с Pig (в оболочке Grunt), но вы пытаетесь инкапсулировать материал без свиньи в скрипт Pig, который вы хотите запускать много раз (не интерактивно). Я бы пошел наоборот. Я инкапсулировал этот материал (операции с файлами/подготовка в качестве примера) в сценарий оболочки/Python и выписал бы скрипт свиньи вместе с другим материалом, сохраняя чистоту сценария Pig. – Ruslan

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