2016-06-24 4 views
0

Начав изучать скрипты латинского языка Pig и придерживаться ниже проблемы. Я прошел через подобные вопросы по одной теме без везения! Хотите найти СУММ всех возрастных полей.Функция SUM в PIG

DUMP X; 
(22)(19) 
grunt> DESCRIBE X; 
X: {age: int} 

Я попробовал несколько вариантов, таких как:

Y = FOREACH (group X all) GENERATE SUM(X.age); 

Но, получая ниже исключения.

Invalid field projection. Projected field [age] does not exist in schema: group:chararray,X:bag{:tuple(age:int)}. 

Спасибо за ваше время и помощь.

+0

отправьте свой сценарий. что вы пытаетесь сделать? – syadav

+0

Примеры данных; (кузнец, {(хищники, 1), (листья, 2)}, [возраст № 22]) (Кэрол, {(янки, 1), (синие сойки, 2), (кавалеры, 3)}, [ возраст № 19]) Код сценария: A = LOAD 'input/pigData/pig_expressions.txt' AS T: tuple (f1: chararray, f2: bag {T2: tuple (t1: chararray, t2: int)}, f3: карта []); X = FOREACH A GENERATE T.f3 # 'age' AS age: int; – dossani

+0

Вы можете отредактировать свой вопрос и опубликовать эти шаги в самом вопросе. Кто-то может помочь здесь. – syadav

ответ

0

Я думаю, что проекция Y должна работать так, как вы ее написали. Вот маленький пример кода для этого же, и это просто отлично работает для меня.

X = LOAD 'SO/sum_age.txt' USING PigStorage('\t') AS (age:int); 
DESCRIBE X; 
Y = FOREACH (group X all) GENERATE 
    SUM(X.age); 
DESCRIBE Y; 
DUMP Y; 

Таким образом, ваша проблема выглядит странно. Я использовал следующие входные данные:

-bash-4.1$ cat sum_age.txt 
22 
19 

Можете ли вы попробовать те же данные со сценарием, который я вставил здесь?

+0

Спасибо за ваше время и помощь. Приведенный вами пример работает. Однако, нет никакой удачи в данных, которые у меня есть. – dossani

+0

Можете ли вы поделиться некоторыми примерами входных данных, которые у вас есть? – kecso

+0

(кузнец, {(хищники, 1), (листья, 2)}, [возраст № 22]) – dossani