Apache pig 如何在数据包中找到不同的值?

Apache pig 如何在数据包中找到不同的值?,apache-pig,Apache Pig,假设我有一些数据,比如 1,A 1,A 1,B 2,C 2,D 3,E 3,E 我希望能够对第一列进行分组,然后返回该组中的不同值: 1,A,B 2,C,D 3,E 或 除了UDF之外,还有其他方法可以做到这一点吗 如果我这样做 DATA = LOAD 'data.txt' USING PigStorage(',') AS (a:int, b:chararray); GROUPED = GROUP DATA BY a; UNIQUES = FOREACH GROUPED { di

假设我有一些数据,比如

1,A
1,A
1,B
2,C
2,D
3,E
3,E
我希望能够对第一列进行分组,然后返回该组中的不同值:

1,A,B
2,C,D
3,E

除了UDF之外,还有其他方法可以做到这一点吗

如果我这样做

DATA = LOAD 'data.txt' USING PigStorage(',') AS (a:int, b:chararray);

GROUPED = GROUP DATA BY a;

UNIQUES = FOREACH GROUPED {
    distinct_bs = DISTINCT GROUPED.b;
    GENERATE
        group AS a
        ,FLATTEN(distinct_bs)
    ;
}
(无论是否展平,或者如果我将
组作为
,我都会收到

ERROR 1200: org.apache.pig.newplan.logical.expression.ScalarExpression
cannot be cast to org.apache.pig.newplan.logical.expression.ProjectExpression

分组不包含b,但数据包含:

DESCRIBE GROUPED
GROUPED: {group: int,DATA: {(a: int,b: chararray)}}
请尝试以下操作:

UNIQUES = FOREACH GROUPED {
    distinct_bs = DISTINCT DATA.b;
    GENERATE
        group AS a,
        distinct_bs;
}
结果:

(1,{(A),(B)})
(2,{(C),(D)})
(3,{(E)})

昨晚我花了几个小时在这个问题上,得到了与@Fred相同的结果。我不相信它可以在没有自定义项的情况下进入key,{$n}格式,正如你提到的。
(1,{(A),(B)})
(2,{(C),(D)})
(3,{(E)})