我在猪身上有一些记忆问题。
所以这是我的代码。
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';
代码会有任何问题吗?我尝试运行它并在小样本上进行测试,看起来很好。但我不确定它是否会产生任何我不知道的含义。
忽略代码质量,因为我知道这不是编写脚本或编码的好方法。但是,这只是一次性使用的脚本。
答案 0 :(得分:0)
简答:没问题。
长答案:Pig latin变量就像任何其他编程语言变量一样。你有一个java程序,你为目的A声明一个变量,然后你决定将该变量重用于目的B,目的是C..etc。这种方法没有任何问题,只要它符合您的最终结果。大多数以性能为中心的代码使用位操作来执行此操作,您可以在嵌入式系统中看到最常见的此类代码。来自您的用例,pig latin用于批量处理大型数据集/事件。因此,一个进程在这里的数据量与嵌入式系统不可比。重用变量不应在性能方面提供任何额外的好处。这种方法的缺点是您的ETL管道难以阅读/理解,并且可能容易出现更多错误。因此,这不是推荐的做法。