2016-03-26 19 views
1

У меня есть следующие данные:Pig Latin ошибка синтаксиса

AGE,EDU,SEX,SALARY 
67,10th,Male,<=50K 
17,10th,Female,<=50K 
40,Assoc-voc,Male,>50K 
35,Assoc-voc,Male,<=50K 
57,Assoc-voc,Male,<=50K 
49,Assoc-voc,Male,>50K 
42,Bachelors,Male,>50K 
30,Bachelors,Male,>50K 
23,Bachelors,Female,<=50K 

============================== ==========================

мой Pig Latin сценарий:

sensitive = LOAD '/mdsba' using PigStorage(',') as (AGE,EDU,SEX,SALARY); 
--Filtered the data by the city 
Data_filter1 = FILTER sensitive by (SALARY matches '<=50K'); 
Data_filter2 = FILTER sensitive by (SALARY matches '>50K'); 
BA= group Data_filter1 by (EDU,SEX) ; 

BB= foreach BA generate group as EDU, COUNT (Data_filter1) as cn:int; 

BC= FILTER BB by (cn == 4); 

Dump BC ; 

сообщение об ошибке:

java.lang.ClassCastException: java.lang.Integer нельзя отнести к java.lang.Long

любая помощь, пожалуйста,

ответ

0

Проблема у вас есть то, что вы смешиваете тип данных Int с длинным типом данных.

Вам необходимо вручную преобразовать int в длинный.

+1

Да, вы правы. спасибо Тиму –

0

Проблема заключается в том, что COUNT вернуться длинный, но вы преобразовать его в целое Ваш код должен выглядеть следующим образом:

BB= foreach BA generate group as EDU, COUNT (Data_filter1) as cn; 

или

BB= foreach BA generate group as EDU, COUNT (Data_filter1) as cn:long;