PIG LATIN中多变量声明中的内存是否有任何缺点?

时间:2015-02-12 10:53:21

标签: variables apache-pig

我已经阅读了很多关于PIG的讨论,我注意到每一行都需要声明一个变量。

如果您要宣布新变量,有任何缺点吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

每一行都是一个处理步骤,您需要将结果放在某处以便在后续步骤中使用它。所以我不确定如果没有变量在行的开头你会如何继续。因为您可能知道我认为您是否需要为每行选择一个新的变量名称,如果您通过重新使用现有名称以某种方式节省资源。这一点在Alan Gates(O'Reilly)的“Programming PIG”一书中得到了明确的解释,所以我只想引用相关的段落:

  

Pig Latin是一种数据流语言。每个处理步骤都会产生一个   新数据集或关系。在input = load'data'中,输入是名称   加载数据集数据产生的关系。一个   关系名称称为别名。关系名称看起来像   变量,但它们不是。一旦完成,任务就是永久性的。它   可以重用关系名称;例如,这是合法的:

A = load 'NYSE_dividends' (exchange, symbol, date, dividends); 
A = filter A by dividends > 0; 
A = foreach A generate UPPER(symbol);
  

但是,不推荐。它看起来就像你在   重新分配A,但实际上你正在建立一个名为A的新关系,   失去了对旧关系的追踪,叫做A.猪足够聪明   跟上,但它仍然不是一个好习惯。这会导致混乱   在尝试阅读你的程序时(我指的是A?)和   阅读错误信息时。