我已经阅读了很多关于PIG的讨论,我注意到每一行都需要声明一个变量。
如果您要宣布新变量,有任何缺点吗?
谢谢!
答案 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?)和 阅读错误信息时。