2016-07-13 14 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

デリミタとして '['を使用してデータをロードしてください。 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; 
関連する問題