在Pig中分组后选择字段

时间:2013-06-28 17:15:36

标签: apache-pig

我可能缺少一些非常微不足道的东西,但我无法让它发挥作用。我有一个“电影”对象,有标题,演员,年份和角色。现在我想要的是拥有标题的结果,以及包含演员/角色对的嵌套包。

如果我只做group movies by title,我最终得到的结果就像(标题,{电影对象})那样完美,除了标题和年份也出现在那里的电影对象中。我只想要演员和角色。

我也试过foreach movie_groups generate group, movies.actor, movies.role,但后来我最终得到了(标题,{所有演员},{所有角色})这显然是错误的。

在SQL中,这将是如此微不足道,以至于我不禁因为无法解决这个问题而感到非常愚蠢。有人会有建议吗?

1 个答案:

答案 0 :(得分:5)

看电影的格式会很有帮助,但我认为它是这样的:

MovieTitle1 Year1 Actor1 Role1
MovieTitle1 Year2 Actor2 Role2
etc.

在这种情况下,我会这样做:

result = FOREACH (GROUP movies BY title)  
         GENERATE FLATTEN(group), movies.(actor, role) AS actors ;

另外,你提到电影也包含年份。如果您不需要该字段,那么首先仅投影您需要的字段(标题,演员,角色)可能是值得的。