Apache Pig:加入后展平列名
Posted
技术标签:
【中文标题】Apache Pig:加入后展平列名【英文标题】:Apache Pig: Flatten column names after join 【发布时间】:2015-04-22 07:36:41 【问题描述】:假设我像这样进行连接:
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】:问题是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
的名称不再模棱两可,您不必引用原始别名(但是,它们现在都在新别名中,如果您继续加入,它会变得非常大) .
【讨论】:
以上是关于Apache Pig:加入后展平列名的主要内容,如果未能解决你的问题,请参考以下文章