2016-07-13 5 views
0

말 스키마 같다 :PIG는 : 다른 행으로 나누어 배열 요소

gen_data: {a: chararray,f: chararray} 

입력 :(4,[IAB9, IAB9-7, IAB1, IAB9-30])

원하는 출력 :

(4,IAB9) 

(4,IAB9-7) 

(4,IAB1) 

(4,IAB9-30) 

난 각을 얻고 싶은 배열 요소를 다른 열과 함께 다른 행에 배치합니다.

위의 원하는 출력을 얻을 수 없습니다. 이 출력을 얻을 수 있도록 도와주세요. 어떤 도움을 주셔서 감사합니다.

답변

0

사용은 초에 .Remove, 첫 번째 열의와 ']' '['구분 기호로 및로드 data.This는 IAB9, IAB9-7, IAB1, IAB9-30 당신에게 (4)를주고, 것]을 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;