说我像这样加入:
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吗?我是猪新手,可以使用一些指导。
谢谢!
答案 0 :(得分:0)
问题是f1
和f2
在J
中变得含糊不清。
如果您不想在事后重命名列(并且顺便说一下,您只需要重命名不明确的列),那么也许您可以在之前重命名它们。
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);
现在名称f1
和f2
不再模棱两可,您不必引用原始别名(但是,它们现在都在新的别名中,它们可以相当长如果你继续加入那么大。)