Ошибка синтаксиса 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
================================================== ======
мой Свинья латинский скрипт:
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
любая помощь, пожалуйста
2 ответа
Проблема в том, что вы смешиваете тип данных int с длинным типом данных.
Вам нужно вручную конвертировать int в long.
Проблема в том, что COUNT возвращает long, но вы конвертируете его в int. Ваш код должен выглядеть следующим образом:
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;