Apache pig pig中每十年记录的数量

Apache pig pig中每十年记录的数量,apache-pig,data-analysis,Apache Pig,Data Analysis,我有这样的数据 name, id, nametype,recclass,mass, fall, year, Aachen,1, Valid, L5, 21, Fell, 01/01/1880 12:00:00 AM, Aarhus,2, Valid, H6, 720 Fell, 01/01/1951 12:00:00 AM : : : : : 45700 我必须用拉丁语找出每十年的录音数量。不知道起始年和结束年,因为数

我有这样的数据

name, id, nametype,recclass,mass, fall, year,

Aachen,1, Valid,    L5,      21,  Fell, 01/01/1880 12:00:00 AM,

Aarhus,2, Valid,    H6,      720  Fell, 01/01/1951 12:00:00 AM

 :     :


 :     :

 :    45700
我必须用拉丁语找出每十年的录音数量。不知道起始年和结束年,因为数据未排序

我尝试了以下代码:

nasadata = load 'Meteorite_Landings.csv' using PigStorage(',') as(name:chararray,id:int,nametype:chararray,recclass:chararray,mass:int,fall:chararray,year:chararray);

B = FOREACH nasadata  GENERATE year;

C = FOREACH B GENERATE ToDate(year,'dd-MM-YYYY') as year1;
当我转储C时,它显示无法从输入文件读取数据。但当我转储nasadata时,它工作。当我描述C时,它显示

C: {year1: datetime}
grunt> 

您确定ToDate格式正确吗?因为“01/01/1880 12:00:00 AM”没有“dd-MM-YYYY”格式,但是“01-01-1880”会

您可以尝试格式化日期或使用STRSPLIT(STRSPLIT(year.).$0,“/”).$2提取年份。然后使用
(INT)STRSPLIT(STRSPLIT(year.).$0,“/”).$2将其转换为整数。然后,你可以用类似这样的东西把一年的时间四舍五入到最接近的十年

A = FOREACH data GENERATE (INT)STRSPLIT(STRSPLIT(year, ' ').$0, '/').$2 AS year;
B = FOREACH A GENERATE (year - (year % 10)) AS year_rounded;
C = GROUP B BY year_rounded;
D = FOREACH C GENERATE group, COUNT(C):
请回答你的问题。应更新问题,以包括所需行为、特定问题或错误,以及重现问题所需的最短代码。