使用 Apache Pig 过滤日期
Filtering Dates Using Apache Pig
我有一份带有发行日期的电影列表。我想获得比给定年份更新的电影列表,例如1982 年,所以 1983 年、1984 年的电影等等都使用 Apache Pig。
日期的格式为 01-Jan-1995。我可以正确加载数据,但我的 FILTER 操作指出类型不匹配。
我尝试将字符数组转换为日期时间格式,但是结果是格式为 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;
对日期时间对象的年份部分使用 GetYear(),如果您想要 1982 年以后的电影,过滤器应为 movieYear > 1982
nameLookupYear = FOREACH nameLookup GENERATE movieID, movieTitle, GetYear(releaseYear) AS movieYear;
oldMovies = FILTER nameLookupYear by movieYear > 1982;
我有一份带有发行日期的电影列表。我想获得比给定年份更新的电影列表,例如1982 年,所以 1983 年、1984 年的电影等等都使用 Apache Pig。
日期的格式为 01-Jan-1995。我可以正确加载数据,但我的 FILTER 操作指出类型不匹配。
我尝试将字符数组转换为日期时间格式,但是结果是格式为 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;
对日期时间对象的年份部分使用 GetYear(),如果您想要 1982 年以后的电影,过滤器应为 movieYear > 1982
nameLookupYear = FOREACH nameLookup GENERATE movieID, movieTitle, GetYear(releaseYear) AS movieYear;
oldMovies = FILTER nameLookupYear by movieYear > 1982;