2015-11-06 5 views
0

Я пытаюсь доставить вывод, который объединяет последние два поля (счет и книги) и делит их друг на друга (количество/книги) для каждой группы. В настоящее время у меня есть код группировки, который группируется по первому элементу массива. Я не уверен, как получить суммы двух последних элементов и суммировать их. Я опубликовал код, который у меня есть. Заранее спасибо!Подведение итогов в Pig

bigrams = LOAD 'txt' AS (bigram:chararray, year:int, count:int, books:int); 
grouping = group bigrams by bigram; 

STORE grouping INTO 's3://cse6242vrv3/output1.txt'; 

ответ

1

Непонятно, что вы ожидаете в выходе. Итак, я полагаю, вы просто хотите знать, как делать скопления в Pig. Сообщите нам больше, если вы ищете что-то другое.

bigrams = LOAD 'txt' AS (bigram:chararray, year:int, count:int, books:int); 
grouping = foreach(group bigrams by bigram) generate group AS biagram, 
        SUM(bigrams.count) AS sum_count, 
        SUM(biagram.books) AS sum_books, 
        SUM(bigrams.count)/SUM(biagram.books) AS ratio; 
STORE grouping INTO 's3://cse6242vrv3/output1.txt'; 

Вы можете найти более подробную информацию о агрегирования свиньи здесь- https://pig.apache.org/docs/r0.15.0/basic.html#group еще одна вещь, которую вы могли бы быть заинтересованы в свинью вложен блоки, которые могут быть использованы для сложных вычислений в группе. https://pig.apache.org/docs/r0.15.0/basic.html#nestedblock