I have input like:
(1, (a, b, c))
(2, (e, f, g))
The output I expected is like:
(1, a)
(1, b)
(1, c)
(2, e)
(2, f)
(2, g)
I have input like:
(1, (a, b, c))
(2, (e, f, g))
The output I expected is like:
(1, a)
(1, b)
(1, c)
(2, e)
(2, f)
(2, g)
May be it will help you:
A = LOAD 'data' AS (int:a, t1:tuple(t1a:chararray, t1b:chararray,t1c:chararray));
B = FOREACH A GENERATE a,t1.$0,t1.$1,t1.$2;
C = group B by a;
X = COGROUP C BY a, C BY $0;
DUMP X;
Can you try this?
A = LOAD 'input.txt' USING PigStorage() AS (f1:int,T:tuple(f2:chararray,f3:chararray,f4:chararray));
B = FOREACH A GENERATE f1,FLATTEN(TOBAG(T.f2,T.f3,T.f4));
DUMP B;
Step 1: Load input file
1 a,b,c
2 e,f,g
as
crude_input = load '' USING PigStorage() AS (id:int, ip_tuple:tuple(val1:chararray, val2:chararray, val3:chararray));
dump crude_input;
(1,(a,b,c))
(2,(e,f,g))
Step 2:
crude_flatened = foreach crude_input GENERATE id, FLATTEN($1);
This will generate
(1,a,b,c)
(2,e,f,g)
Step 3:
output_data = foreach crude_flatened generate id, FLATTEN(TOBAG(ip_tuple::val1,ip_tuple::val2,ip_tuple::val3));
(1,a)
(1,b)
(1,c)
(2,e)
(2,f)
(2,g)