2017-01-05 9 views
0

Я новичок в свинье. У меня есть выходной результат.Как создать карту значений ключей при наличии дубликатов ключей?

(001,Kumar,Jayasuriya,1123456754,Matara) 
(001,Kumar,Sangakkara,112722892,Kandy) 
(001,Rajiv,Reddy,9848022337,Hyderabad) 
(002,siddarth,Battacharya,9848022338,Kolkata) 
(003,Rajesh,Khanna,9848022339,Delhi) 
(004,Preethi,Agarwal,9848022330,Pune) 
(005,Trupthi,Mohanthy,9848022336,Bhuwaneshwar) 
(006,Archana,Mishra,9848022335,Chennai) 
(007,Kumar,Dharmasena,758922419,Colombo) 
(008,Mahela,Jayawerdana,765557103,Colombo) 

Как я могу создать карту выше, так что выход будет выглядеть примерно так,

001#{(Kumar,Jayasuriya,1123456754,Matara),(Kumar,Sangakkara,112722892,Kandy),(001,Rajiv,Reddy,9848022337,Hyderabad)} 
002#{(siddarth,Battacharya,9848022338,Kolkata)} 

Я попробовал функцию ToMap.

mapped_students = FOREACH students GENERATE TOMAP($0,$1..); 

Но я не могу вывести вывод из вышеуказанной команды, поскольку процесс вызывает ошибку и останавливается там. Любая помощь приветствуется.

ответ

0

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

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

согласно ваш желаемый результат здесь - часть кода.

A = LOAD 'path_to_data/data.txt' USING PigStorage(',') AS (id:chararray,first:chararray,last:chararray,phone:chararray,city:chararray); 

Если вы не хотите, чтобы дать схему, то:

A = LOAD 'path_to_data/data.txt' USING PigStorage(','); 

B = GROUP A BY $0; (this relation will group all your records based on your first column) 

DESCRIBE B; (this will show your described schema) 

DUMP B; 

Надеется, что это помогает ..

+0

вопрос, я не знаю, имен столбцов в «A», как вы указали. Этот скрипт должен иметь возможность обрабатывать любую таблицу с любым количеством столбцов. Можете ли вы придумать, как это сделать? – mayooran

+0

Эй, спасибо за ответ. Но когда вы сбрасываете B как есть, вы не получаете результат, который мне нужен. Потому что теперь у вас будет ключ в столбце group and value. то есть {001. {001, Кумар, Jayasuritha ...}}. Если идентификатор будет дважды на выходе. Мне это нужно, {001, {Kumar, Jayasuriya ..}} – mayooran

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

  • Нет связанных вопросов^_^