Ошибка синтаксиса 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;
Другие вопросы по тегам