Apache pig 猪的拉丁语很慢

Apache pig 猪的拉丁语很慢,apache-pig,Apache Pig,我正在运行一个PIG脚本,它运行得非常快,直到我到达FOREACH。。。生成展平(…)行 那条线跑得这么慢有什么原因吗。(这会导致整个脚本在功能相当强大的集群上超时) 谢谢, Barry当两个展平(…)操作符在生成后一起使用时,您将得到两个袋子之间的笛卡尔积。因此,如果一个组生产的包有N个元素,那么在同一个包上使用2个展平(..)操作符之后,每个组将生成N*N行,这可能会对CPU、HDD和网络产生沉重的负担。请参见以下示例: 代码: inpt = load '/pig_fun/input/gro

我正在运行一个PIG脚本,它运行得非常快,直到我到达
FOREACH。。。生成展平(…)

那条线跑得这么慢有什么原因吗。(这会导致整个脚本在功能相当强大的集群上超时)

谢谢, Barry

当两个展平(…)操作符在生成后一起使用时,您将得到两个袋子之间的笛卡尔积。因此,如果一个组生产的包有N个元素,那么在同一个包上使用2个展平(..)操作符之后,每个组将生成N*N行,这可能会对CPU、HDD和网络产生沉重的负担。请参见以下示例:

代码:

inpt = load '/pig_fun/input/group.txt' as (c1, c2);
grp = group inpt by (c1, c2);
flt = foreach grp generate FLATTEN(inpt.c1), FLATTEN(inpt.c2);
1       a
1       a
1       b
1       b
1       c
(1,a)
(1,a)
(1,a)
(1,a)
(1,b)
(1,b)
(1,b)
(1,b)
(1,c)
输入:

inpt = load '/pig_fun/input/group.txt' as (c1, c2);
grp = group inpt by (c1, c2);
flt = foreach grp generate FLATTEN(inpt.c1), FLATTEN(inpt.c2);
1       a
1       a
1       b
1       b
1       c
(1,a)
(1,a)
(1,a)
(1,a)
(1,b)
(1,b)
(1,b)
(1,b)
(1,c)
输出:

inpt = load '/pig_fun/input/group.txt' as (c1, c2);
grp = group inpt by (c1, c2);
flt = foreach grp generate FLATTEN(inpt.c1), FLATTEN(inpt.c2);
1       a
1       a
1       b
1       b
1       c
(1,a)
(1,a)
(1,a)
(1,a)
(1,b)
(1,b)
(1,b)
(1,b)
(1,c)

查看(1,a)中的2条记录和(1,b)中的2条记录是如何分别导致4条输出记录的。但是(1,c)的1条记录只产生了1条输出记录。

OK,所以最后两条清管器线的更好解决方案是将它们替换为:
result=FOREACH grouped GENERATE group.query\u norm,group.url。然而,这并不能解释为什么变平如此缓慢!