Apache pig 使用apachepig过滤日期

Apache pig 使用apachepig过滤日期,apache-pig,Apache Pig,我有一张有发行日期的电影清单。我想获得比给定年份更新的电影列表,例如1982年,1983年、1984年的电影,等等 日期格式为1995年1月1日。我可以正确加载数据,但我的筛选操作表明存在类型不匹配 我已经尝试将chararray转换为datetime格式,但是,结果是格式为1995-01-01T00:00:00.000-08:00的日期 1) 如何仅检索年份 2) 是否仅筛选比所选年份更新的值 ratings = LOAD '/user/maria_dev/ml-100k/u.data' AS

我有一张有发行日期的电影清单。我想获得比给定年份更新的电影列表,例如1982年,1983年、1984年的电影,等等

日期格式为1995年1月1日。我可以正确加载数据,但我的筛选操作表明存在类型不匹配

我已经尝试将chararray转换为datetime格式,但是,结果是格式为1995-01-01T00:00:00.000-08:00的日期

1) 如何仅检索年份

2) 是否仅筛选比所选年份更新的值

ratings = LOAD '/user/maria_dev/ml-100k/u.data' AS (userID:int, movieID:int, rating:int, ratingTime:int);
metadata = LOAD '/user/maria_dev/ml-100k/u.item' USING PigStorage ('|') AS (movieID:int, movieTitle:chararray, releaseDate:chararray, imdbLink: chararray);
nameLookup = FOREACH metadata GENERATE movieID, movieTitle, ToDate(releaseDate, 'dd-MMM-yyyy') AS releaseYear;
nameLookupYear = FOREACH nameLookup GENERATE movieID, movieTitle, ToString(releaseYear, 'yyyy') AS movieYear;
oldMovies = FILTER nameLookupYear by movieYear < ('1982');

DUMP oldMovies;
ratings=LOAD'/user/maria_dev/ml-100k/u.data'AS(userID:int,movieID:int,rating:int,ratingTime:int);
metadata=使用PigStorage(“|”)加载“/user/maria_dev/ml-100k/u.item”,如(movieID:int,movieTitle:chararray,releaseDate:chararray,imdbLink:chararray);
nameLookup=FOREACH元数据生成movieID、movieTitle、ToDate(releaseDate,'dd-MMM-yyyy')作为releaseYear;
nameLookupYear=FOREACH NameLookupGenerate movieID、movieTitle、ToString(releaseYear,'yyyy')作为movieYear;
oldMovies=按电影年筛选名称LookupYear<('1982');
丢弃旧电影;
用于datetime对象的年份部分,如果您想要比1982年更新的电影,则过滤器应为
movieYear>1982

nameLookupYear = FOREACH nameLookup GENERATE movieID, movieTitle, GetYear(releaseYear) AS movieYear;
oldMovies = FILTER nameLookupYear by movieYear > 1982;

如果存在类型不匹配,则应验证文件中没有标题或空日期