Joker 发表于 2014-12-9 17:43:44

其实,我打算写UDF把需要字段传过去,但是,当我写完后,问题还是一样,我无法把字段A和字段B的电话字段一起传入,只能把A字段的值发送过去。

哪位仁兄可以提供个两个字段一起传入的思路啊?{:soso_e150:}

muyannian 发表于 2014-12-9 18:31:16

Joker 发表于 2014-12-9 17:43
其实,我打算写UDF把需要字段传过去,但是,当我写完后,问题还是一样,我无法把字段A和字段B的电话字段一 ...

循环里套循环,无论是比较,还是你写的函数都是可以的。

Joker 发表于 2014-12-9 20:37:17

muyannian 发表于 2014-12-9 18:31
循环里套循环,无论是比较,还是你写的函数都是可以的。

我看了你上面的例子group里面有A
但是我没有group获取不到,使用JOIN总有一方是没有数据的

可以foreach{
       foreach
}
这样嵌套?

大哥可以写个实例代码?

muyannian 发表于 2014-12-9 20:53:01

Joker 发表于 2014-12-9 20:37
我看了你上面的例子group里面有A
但是我没有group获取不到,使用JOIN总有一方是没有数据的



上面那个应该也可以,也可以参考这个:

A = load 'foo' as (x:chararray, y:int, z:int);
A1 = foreach A generate x, y + z as yz;
B = group A1 by x;
C = foreach B generate SUM(A1.yz);

Joker 发表于 2014-12-10 14:00:54

pig2 发表于 2014-12-9 15:51
可以试一下全连接Full Join
更多内容:
pig入门简单操作及语法包括支持数据类型、函数、关键字、操作符等 ...

版主 你好,我想请问下 JOIN FULL怎么连接三张表或者更多

我使用
JOIN A BY a1 FULL, B BY b1
这样是正确的

但是
JOIN A BY a1 FULL,B BY b1 FULL, C BY c1;
这样就报错了,请问有什么方式可以连接三张表或者更多张表的方式吗?

muyannian 发表于 2014-12-10 21:13:35

Joker 发表于 2014-12-10 14:00
版主 你好,我想请问下 JOIN FULL怎么连接三张表或者更多

我使用


目前还不清楚是否支持多表。
理论上应该支持的,最好到官网上看看。
不过即使不支持也有办法,就是把前两张链接表视为一张表,然后再次链接第三张表,如此循环。

Joker 发表于 2014-12-10 21:19:28

muyannian 发表于 2014-12-10 21:13
目前还不清楚是否支持多表。
理论上应该支持的,最好到官网上看看。
不过即使不支持也有办法,就是把前 ...

恩,pig不支持三张表查询,加入你使用的是inner join是可以的

RESULT = JOIN A BY a1,B BY b1, C BY c1;
这样pig不会报错

但是如果用的是outer join之类,左连接,右连接,以及全连接,都是不可行的

之后,我想的就是

J = JOIN A BY a1 FULL,B BY b1;
K = JOIN C BY c1 FULL,D BY d1;

RESULT = JOIN J BY (a1,b1) FULL , K BY (c1,d1);

这样实现,因为后面的需求就是为空的字段按照0填充。
这个我写了个Pig UDF进行实现

不过哥们还是非常感谢你了
页: 1 [2]
查看完整版本: pig两张表字段相同取出不同的值