2017-06-24 14 views
0

j'ai des données telles que (nom, score) A 10 B 25 C 15 A 5 A 36 B 98 C 78 C 78 B Pig Latin pour obtenir la sortie pour la fonction SUM() comme ça?

data = LOAD 'demo.txt' using PigStorage (',') as (name : chararray , score : int); 
groupScore = GROUP data by score; 
totalscore = FOREACH groupScore Generate data.name , SUM(data.score); 

quand je suis en utilisant la fonction SOMME(), la sortie sort comme

{(A)(A)(A), (51)} 
{(B)(B)(B), (135)} 

Je me demande s'il y a est de toute façon je pourrais le montrer comme

012 Qui ne répète pas le champ "nom" pour chaque occurrence?
Toute aide vous aidera.

+0

orks? – TKHN

Répondre

2

est inférieure à la requête pour la solution

data = LOAD 'demo.txt' USING PigStorage(',') AS (name:chararray,score:int); 
groupScore = group data by name; 
result= FOREACH groupScore GENERATE group,SUM(data.score); 

sortie

(A, 51) (B, 135) (C, 171) Votre instruction de chargement est incorrecte .... est-ce vraiment w?

0

groupe par nom

data = LOAD 'demo.txt' as PigStorage (',') using (name : chararray , score : int); 
groupScore = GROUP data by name; 
totalscore = FOREACH groupScore Generate data.name , SUM(data.score); 
+0

Merci pour la réponse, le nom de domaine se répète, je suppose qu'il doit faire quelque chose avec la boucle FOREACH. –