Как получить этот вывод из латыни свиньи в MapReduce

Я хочу получить следующий вывод из Pig Latin / Hadoop

((39,50,60,42,15,Bachelor,Male),5)
((40,35,HS-grad,Male),2)
((39,45,15,30,12,7,HS-grad,Female),6)

из следующей выборки данных выборка данных для взрослых данных

Я написал следующий текст на латинском:

sensitive = LOAD '/mdsba/sample2.csv' using PigStorage(',') as (AGE,EDU,SEX,SALARY);
BV= group  sensitive by (EDU,SEX) ; 
BVA= foreach BV generate group as EDU, COUNT (sensitive) as dd:long;
Dump BVA ;

К сожалению, результаты получаются так

((Bachelor,Male),5)
((HS-grad,Male),2)

1 ответ

Чем попытаться проецировать данные AGE тоже. Что-то вроде этого:

BVA= foreach BV generate 
    sensitive.AGE as AGE,
    FLATTEN(group) as (EDU,SEX), 
    COUNT(sensitive) as dd:long;

Еще одно предложение - указать тип данных при загрузке данных.

sensitive = LOAD '/mdsba/sample2.csv' using PigStorage(',') as (AGE:int,EDU:chararray,SEX:chararray,SALARY:chararray);
Другие вопросы по тегам