Apache pig 猪:每行一袋

Apache pig 猪:每行一袋,apache-pig,Apache Pig,在pig中,我有以下结构: (1,{(2)、(2)、(3)、(12)}) 我想把它转换成: (1,{(2,2)、(3,1)、(12,1)}) 这只是一个分组,并在包内计数:(分组键,计数) 我尝试了一些嵌套在foreach中的group,但它不起作用 我怎么能用猪拉丁语呢?或者我应该自己写一个UDF 谢谢 你可以把袋子展平,然后重新分组。如果您有许多行,每行都有一个小袋子,那么这可能是浪费。在这种情况下,我会推荐一个UDF。这应该适用于您(未经测试): F应该是你要找的 DUMP A; (1,

在pig中,我有以下结构:

(1,{(2)、(2)、(3)、(12)})

我想把它转换成:

(1,{(2,2)、(3,1)、(12,1)})

这只是一个分组,并在包内计数:(分组键,计数)

我尝试了一些嵌套在foreach中的group,但它不起作用

我怎么能用猪拉丁语呢?或者我应该自己写一个UDF


谢谢

你可以把袋子展平,然后重新分组。如果您有许多行,每行都有一个小袋子,那么这可能是浪费。在这种情况下,我会推荐一个UDF。这应该适用于您(未经测试):

F应该是你要找的

DUMP A;
(1, {(2), (2), (3), (12)})
DESCRIBE A;
(x:int, y:bag{})

B = FOREACH A GENERATE x, FLATTEN(y) AS z;
C = GROUP B BY (x, z);
D = FOREACH C GENERATE group.x, group.z, COUNT(B) AS ct;
E = GROUP D BY x;
F = FOREACH E GENERATE group, D.(z,ct);