pig关系操作符可以处理包吗

brccelvz  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(357)

我正在运行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)。
我意识到我的观念很可能有点薄弱,如果有人能帮助我,我将不胜感激。

q0qdq0h2

q0qdq0h21#

记住,包是元组的无序集合。还要记住pig关系中的记录是元组。这意味着一段关系实际上只是一个大袋子。这意味着在概念上,你可以对整个关系做任何事情,你也可以对单个记录中的一个较小的包做任何事情。这是使用嵌套的foreach完成的。
实际上,它们并不完全相同——当处理一个包时,没有涉及到map-reduce循环;这更像是使用自定义项。因此,不是每个操作符都可以这样使用。请注意,我链接到的源在这一点上已过时:您现在可以使用,例如。, GROUP BY 也。

相关问题