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】:

问题是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 的名称不再模棱两可,您不必引用原始别名(但是,它们现在都在新别名中,如果您继续加入,它会变得非常大) .

【讨论】:

以上是关于Apache Pig:加入后展平列名的主要内容,如果未能解决你的问题,请参考以下文章

展平 python 数据框中的条目,如 Apache PIG 包

Apache Pig:组操作后去除命名空间前缀 (::)

展平字符串后 Pig 中的模式

Apache PIG - 加入后投影结果为 NULL

Hive 或 Pig 动态表

SS OrmLite:加入和过滤列名时的列名不明确