Apache Свинья: группировка и суммирование данных - PullRequest
1 голос
/ 10 апреля 2020

У меня есть некоторые данные, такие как:

type1, 2
type2, 1
type1, 3
type2, 4
type1, 5
type2, 3
type1, 1
type3, 5
type3, 5

Я хочу сгруппировать их по типу, ожидаемый результат должен быть:

type1, 11
type2, 8
type3, 10

Вот мой сценарий PIG:

data = LOAD 'my_data.txt' USING
   PigStorage(',') as (type:chararray, num:double);

a = GROUP data BY type;
result = foreach a generate data.type, SUM(data.num);

Dump result;

Но я получаю это:

({(type1),(type1),(type1),(type1)},11.0)
({(type2),(type2),(type2)},8.0)
({(type3),(type3)},10.0)

Как мне избавиться от нескольких типов в каждой записи и иметь только один? Большое спасибо!

1 Ответ

1 голос
/ 11 апреля 2020

Наконец-то обнаружили, что в PIG есть ключевое слово group, которое может помочь достичь этого. Измененный код:

data = LOAD 'my_data.txt' USING
PigStorage(',') as (type:chararray, num:double);

a = GROUP data BY type;
result = foreach a generate group, SUM(data.num);

Dump result;

Надеюсь, это поможет.

...