在猪中重复使用变量

时间:2017-06-07 01:31:16

标签: 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 $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'; 

代码会有任何问题吗?我尝试运行它并在小样本上进行测试,看起来很好。但我不确定它是否会产生任何我不知道的含义。

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

1 个答案:

答案 0 :(得分:0)

简答:没问题。

长答案:Pig latin变量就像任何其他编程语言变量一样。你有一个java程序,你为目的A声明一个变量,然后你决定将该变量重用于目的B,目的是C..etc。这种方法没有任何问题,只要它符合您的最终结果。大多数以性能为中心的代码使用位操作来执行此操作,您可以在嵌入式系统中看到最常见的此类代码。来自您的用例,pig latin用于批量处理大型数据集/事件。因此,一个进程在这里的数据量与嵌入式系统不可比。重用变量不应在性能方面提供任何额外的好处。这种方法的缺点是您的ETL管道难以阅读/理解,并且可能容易出现更多错误。因此,这不是推荐的做法。