Hadoop pig中变量的重用

Hadoop pig中变量的重用,hadoop,apache-pig,latin,Hadoop,Apache Pig,Latin,我的猪有一些记忆问题 这是我的代码 a = load 'some file'; b = load 'file2'; cond = load 'cond file'; c = union a,b; cc = join c by $0, cond by $0; dd = foreach cc generate $0,$1; reduce = foreach(group dd generate by random()) generate flatten (dd); cc = join c by

我的猪有一些记忆问题

这是我的代码

a = load 'some file'; 
b = load 'file2';
cond = load 'cond file';

c = union a,b;
cc = join c by $0, cond by $0;
dd = foreach cc generate $0,$1;
reduce = foreach(group dd generate by random()) generate flatten (dd);

cc = join c by $1, cond by $0;
dd = foreach cc generate $1,$2;
reduce2 = foreach(group dd generate by random()) generate flatten (dd);

final = union reduce, reduce2; 

store final into 'final_output'; 
代码会有什么问题吗?我试着在一个小样本上运行它并进行测试,结果看起来不错。但我不确定这是否会有任何我不知道的影响


忽略代码质量,因为我知道这通常不是编写脚本或编码的好方法。但是,这只是一个一次性脚本

简短回答:没有问题


长答案:Pig拉丁变量与任何其他编程语言变量一样。您有一个java程序,您为目的a声明了一个变量,随后您决定为目的B、目的C等重用该变量。这种方法没有错,只要它符合您的最终结果。大多数以性能为中心的代码都是通过位操作来实现的,您可以在嵌入式系统中看到这种代码。谈到您的用例,pig拉丁语用于批量处理大型数据集/事件。因此,一个进程的数据量无法与嵌入式系统相比。重用变量不应该给性能带来任何额外的好处。这种方法的缺点是,您的ETL管道将很难阅读/理解,并且可能会出现更多错误。因此,这不是推荐的做法。

不,代码或性能没有问题。这是不推荐的,你已经知道原因了。@Philantrover谢谢!