0

私は持っている:

a b 
a c 
a d 

そして、私は生成したいと思います:

a, {(b),(c),(d)} 

を使用してこれを行うと、次のようGROUPになります。

a, {(a,b),(a,c),(a,d)}

バッグの最初のフィールドを取り除くにはどうすればよいですか?

ありがとう。

4

2 に答える 2

3

でこれを行うオプションはありませんGROUP。その列を に射影する必要がありますFOREACH

-- DESCRIBE A ;
-- A: {c1: chararray, c2: chararray}
-- DUMP A ;
-- a b
-- a c
-- a d

B = GROUP A BY c1 ;
C = FOREACH B GENERATE group AS c1, A.c2 AS grpd_c2 ;

これを行う必要がある場合、簡潔にするために通常は次の方法を使用します。

D = FOREACH (GROUP A BY c1)
    GENERATE group AS c1, A.c2 AS grpd_c2 ;

(また、この方法は、使用しないように注意するのに役立ちますB.c2

キーは、元のバッグから列A.c2のみを含むバッグを返すことです。c2たとえば、3 つのフィールド ( c1c2c3) がある場合は、A.(c2, c3)代わりに使用します。

于 2013-09-20T20:42:15.137 に答える