我正在运行programming pig中给出的示例。请看--analyze\u 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);
在这里,order(关系运算符)基于上面的descripe语句应用于daily(bag)。
我意识到我的观念很可能有点薄弱,如果有人能帮助我,我将不胜感激。
1条答案
按热度按时间q0qdq0h21#
记住,包是元组的无序集合。还要记住pig关系中的记录是元组。这意味着一段关系实际上只是一个大袋子。这意味着在概念上,你可以对整个关系做任何事情,你也可以对单个记录中的一个较小的包做任何事情。这是使用嵌套的foreach完成的。
实际上,它们并不完全相同——当处理一个包时,没有涉及到map-reduce循环;这更像是使用自定义项。因此,不是每个操作符都可以这样使用。请注意,我链接到的源在这一点上已过时:您现在可以使用,例如。,
GROUP BY
也。