Hadoop 清管器操作员可以在袋子上工作吗

Hadoop 清管器操作员可以在袋子上工作吗,hadoop,apache-pig,Hadoop,Apache Pig,我正在浏览中给出的示例。请看--analyze_stock.pig示例 我基本上对关系运算符如何处理行李感到困惑,我已经读到,关系运算符只能处理关系。 daily = load 'NYSE_daily' as (exchange:chararray, symbol:chararray, date:chararray, open:float, high:float, low:float, close:float, volume:in

我正在浏览中给出的示例。请看--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);
这里,订单(关系运算符)基于上面的描述语句应用于每日(bag)


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

记住,包是一个无序的元组集合。还要记住,Pig关系中的记录是元组。这意味着一段关系实际上只是一个大袋子。这意味着从概念上讲,你可以对整个关系做任何事情,你也可以对单个记录中的一个较小的包做任何事情。这是通过使用一个


实际上,它们并不完全相同——在处理行李时,不涉及map REDUCT循环;这更像是使用UDF。因此,并非每个操作符都可以这样使用。请注意,我链接到的源在这一点上已经过时:您现在也可以使用,例如,
groupby

我们可以说嵌套foreach中允许的关系运算符也适用于行李吗?您的意思是什么?当在嵌套foreach中使用运算符时,根据定义,您是在将其应用于bags。是的,但文档中指出,关系运算符只能应用于关系,因此,我只是想澄清一下,它也可以应用到袋子上。如果你引用你正在思考的文档,也许会对这个问题有所帮助,我可以具体地回答这个问题。这篇文章“Pig拉丁语语句是一个运算符,它将一个关系作为输入,生成另一个关系作为输出。”这让我质疑操作员是如何应用于行李的。甚至说“所有的Pig拉丁语句都是在关系上操作的(被称为关系运算符)”,但他们也提到“bag是一种关系,类似于table”,所以我想你的回答为我澄清了这一点:)谢谢