Pig Script Function Вопрос - PullRequest
       15

Pig Script Function Вопрос

1 голос
/ 29 июня 2011

Как видно из следующего кода Pig, я повторяю набор операторов для Attr1 и Attr2Есть ли способ извлечь его из функции?Примеры кода действительно помогут.

Attr1ValidRecs = FILTER BaseRecs BY Attr1 IS NOT NULL;
Attr1ValidRecs_all = GROUP Attr1ValidRecs ALL;
Attr1Count = FOREACH Attr1ValidRecs_all GENERATE COUNT(Attr1ValidRecs);
Attr1CountStr = FOREACH Attr1Count GENERATE CONCAT('Recs with Attr1 not null : ',(chararray)$0);

Attr1BaseCross = CROSS BaseRecsCount,Attr1Count;
Attr1BaseRatio = FOREACH Attr1BaseCross GENERATE CONCAT('Ratio of Not Null Attr1 to Total Base Recs: ',(chararray)((double)$1/(double)$0));

Attr2ValidRecs = FILTER BaseRecs BY Attr2 IS NOT NULL;
Attr2ValidRecs_all = GROUP Attr2ValidRecs ALL;
Attr2Count = FOREACH Attr2ValidRecs_all GENERATE COUNT(Attr2ValidRecs);
Attr2CountStr = FOREACH Attr2Count GENERATE CONCAT('Recs with Attr2 not null : ',(chararray)$0);

Attr2BaseCross = CROSS BaseRecsCount,Attr2Count;
Attr2BaseRatio = FOREACH Attr2BaseCross GENERATE CONCAT('Ratio of Not Null Attr2 to Total Base Recs:
',(chararray)((double)$1/(double)$0));

1 Ответ

0 голосов
/ 03 июля 2011

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

То, что я делал в прошлом, когда у меня есть то, что я повторяю снова и снова в одном и том же скрипте, - это генерирование кода Pig Latin в скрипте Python (или чего-то еще, очевидно) с циклом for, заменяяопределенные ключевые слова.Это все еще кажется довольно грязным.

...