-1

我已经尝试了猪几天,但我没有掌握它的窍门。我正在尝试做简单的练习任务,但无济于事。目标是创建一个记录,显示每个 ID 每年的最大运行次数。所以我开始了:

A = LOAD 'pig/input/Batting.csv' using PigStorage(',') as (ID:int, year:int, stint:chararray, team:chararray, league:chararray, games:int, games_bat:int, atbat:int, runs:int); B = GROUP A by year; C = FOREACH B generate group, MAX(A.runs) as maxruns;

我认为在这一点之前一切都很顺利,但是在以下情况下它完全搞砸了:

D = JOIN A by year, C by year; E = FOREACH D generate group, D.(group, ID), maxruns; store E into 'batting_result';

任何关于前进方向的提示或想法将不胜感激。

4

1 回答 1

0

假设您使用的是类似的数据集,一个问题可能是 csv 文件中的第一列(playerId)是 chararray 而不是 int。

我认为您的加入可能有问题(在您评论中写的猪查询中)。

关系 C,有两列 group/year 和 maxruns。要从 A 中获取 playerId,我们必须按年加入并运行。所以,你的关系 D 应该看起来像

D = JOIN A by (year,runs), C by (group,maxruns); 

通过该更改,您应该获得每一年的最大运行次数,以及玩家的玩家 ID。

希望有帮助

于 2013-06-14T03:22:24.530 回答