Вот как вы можете сделать это с помощью потоковой передачи и Python без написания пользовательских UDF:
Предположим, ваши данные - это всего лишь 1 столбец слов. Сценарий python (назовем его wordSeq.py) для обработки будет:
#!/usr/bin/python
### wordSeq.py ### [don't forget to chmod u+x wordSeq.py !]
import sys
for word in sys.stdin:
word = word.rstrip()
sys.stdout.write('\n'.join([word[:i+1] for i in xrange(len(word))]) + '\n')
Затем в своем сценарии pig вы говорите pig, что используете потоковую передачу с указанным выше сценарием и хотите отправить свой сценарий по мере необходимости:
-- wordSplitter.pig ---
DEFINE CMD `wordSeq.py` ship('wordSeq.py');
W0 = LOAD 'words';
W = STREAM W0 THROUGH CMD as (word: chararray);