Apache Pig:加入后展平列名

时间:2015-04-22 07:36:42

标签: hadoop amazon-web-services apache-pig

说我像这样加入:

A = load 'inputa' as (f1,f2,f3,f4);  
B = load 'inputb' as (f1,f2,f5,f6);  

J = join A by (f1,f2) left outer, B by (f1,f2);  

获得J f1,f2,f3,f4,f5,f6字段名称的最简单方法是什么? (而不是A:f1, A:f2, A:f3, A:f4, B:f1, B:f2, B:f5, B:f6

我知道我可以做到以下几点:

C = foreach J generate A:f1 as f1, A:f2 as f2, A:f3 as f3, A:f4 as f4, B:f5 as f5, B:f6 as f6;

但是我遇到了加入后我有很多列的情况,所以把它全部写出来是不切实际的。我应该使用UDF吗?我是猪新手,可以使用一些指导。

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是f1f2J中变得含糊不清。

如果您不想在事后重命名列(并且顺便说一下,您只需要重命名不明确的列),那么也许您可以在之前重命名它们。

A = load 'inputa' as (f1,f2,f3,f4);  
B = load 'inputb' as (f1B,f2B,f5,f6); 
J = join A by (f1,f2) left outer, B by (f1B,f2B);

现在名称f1f2不再模棱两可,您不必引用原始别名(但是,它们现在都在新的别名中,它们可以相当长如果你继续加入那么大。)