使用pig的电影数据集分析

pcww981p  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(355)

我为电影数据库设置了以下数据集:
分级:userid,movieid,分级::电影:movieid,title::用户:userid,性别,年龄
现在我要加入以上3个数据集,确定哪部电影在女性中的评价最高,在男性中的评价最低,反之亦然。我已经完成了连接:

myusers = LOAD '/user/cloudera/movies/input/users.dat' 
  USING PigStorage(':') 
  AS (user:int, n1, gender:chararray, n2, age:int);

ratings = LOAD '/user/cloudera/movies/input/ratings.dat' 
  USING PigStorage(':') 
  AS (user:int, n1, movie:int, n2, rating:int);

movies = LOAD '/user/cloudera/movies/input/movies.dat' 
  USING PigStorage(':') 
  AS (movie:int,n1,title:chararray);

data = JOIN ratings BY user, myusers BY user;
data2= JOIN data BY ratings::movie, movies BY movie;

但在这之后,当我尝试从data2打印列时,我遇到了许多问题,例如“error 0:scalar在输出中有多行”。有什么办法帮我完成这项任务吗?

ux6nzvsh

ux6nzvsh1#

在以下步骤之后

data = JOIN ratings BY user, myusers BY user;

使用gender作为过滤器,创建两个数据集,一个为男性,另一个为女性。对数据集进行排序,并获取两个数据集的最大值和最小值。

male = FILTER data by gender == 'M'; -- Use the gender value for male
female = FILTER data by gender == 'F';
m_max = LIMIT (ORDER male by rating DESC) 1;
f_max = LIMIT (ORDER female by rating DESC) 1;
m_min = LIMIT (ORDER male by rating ASC) 1;
f_min = LIMIT (ORDER female by rating ASC) 1;

相关问题