猪关系经营者可以在袋子上工作

时间:2014-05-16 15:35:15

标签: hadoop apache-pig

我正在浏览Programming Pig中给出的示例。看看--analyze_stock.pig示例。

我基本上对关系运营商如何处理行李箱感到困惑,我已经读过关系运营商只能处理关系。

daily    = load 'NYSE_daily' as (exchange:chararray, symbol:chararray,
               date:chararray, open:float, high:float, low:float,
               close:float, volume:int, adj_close:float);
grpd     = group daily by symbol;

如果我运行

,则运行这两个语句
describe grpd

我得到的输出是

{group: chararray,daily: {(exchange: chararray,symbol: chararray,date: chararray,open: float,high: float,low: float,close: float,volume: int,adj_close: float)}}

这清楚地表明每日都是一个包

脚本中的下一个语句是

analyzed = foreach grpd {
            sorted = order daily by date;
            generate group, analyze(sorted);

这里的顺序(关系运算符)基于上面的描述语句应用于每日(包)。

我意识到我的概念很可能在这里有点弱,如果有人可以帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

请记住,一个包是一个无序的元组集合。还要记住Pig关系中的记录是元组。这意味着关系实际上只是一个大包。这意味着,从概念上讲,您可以对整个关系做任何事情,您也可以在单个记录中对较小的包进行操作。这是使用nested foreach完成的。

在实践中,它们并不相同 - 在处理行李时,不涉及地图缩减周期;它更像是使用UDF。因此,并非每个操作员都可以这种方式使用。请注意,我在此处链接的来源已过时:您现在可以使用,例如GROUP BY