假设架构如下:
gen_data: {a: chararray,f: chararray}
输入: (4,[IAB9, IAB9-7, IAB1, IAB9-30])
所需的输出:
(4,IAB9)
(4,IAB9-7)
(4,IAB1)
(4,IAB9-30)
我想将每个数组元素与其他列一起放在不同的行中。
我无法获得上述所需的输出。请帮我实现这个输出。任何帮助表示赞赏。
答案 0 :(得分:0)
使用'['作为分隔符并加载数据。这会给你 4,和IAB9,IAB9-7,IAB1,IAB9-30]。删除第一列中的第二列和']'。然后使用STRSPLIT或TOKENIZE和TOBAG
A = LOAD 'data.txt' USING PigStorage('[') AS (f1:chararray,f2:chararray);
B = FOREACH A GENERATE REPLACE(f1,',',''),REPLACE(f2,']','');
C = FOREACH B GENERATE $0,FLATTEN(STRSPLIT($1,','));
D = FOREACH C GENERATE $0,FLATTEN(TOBAG($1,$2,$3,$4)); -- Try TOBAG(*) if this doesn't work
DUMP D;