我正在浏览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);
这里的顺序(关系运算符)基于上面的描述语句应用于每日(包)。
我意识到我的概念很可能在这里有点弱,如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
请记住,一个包是一个无序的元组集合。还要记住Pig关系中的记录是元组。这意味着关系实际上只是一个大包。这意味着,从概念上讲,您可以对整个关系做任何事情,您也可以在单个记录中对较小的包进行操作。这是使用nested foreach完成的。
在实践中,它们并不相同 - 在处理行李时,不涉及地图缩减周期;它更像是使用UDF。因此,并非每个操作员都可以这种方式使用。请注意,我在此处链接的来源已过时:您现在可以使用,例如GROUP BY
。