2014-12-24 27 views
1

我想爲下面的查詢編寫一個豬腳本。在Pig中將一行轉換爲多行

輸入是:

ABC,DEF,GHI,JKL,AAA,aaa,1,2,3,bbb,1,2,3,ccc,1,2,3,BBB,aaa,1,2,3,bbb,1,2,3,ccc,1,2,3 

輸出應該是:

ABC,DEF,GHI,JKL,AAA,aaa,1,2,3 
ABC,DEF,GHI,JKL,AAA,bbb,1,2,3 
ABC,DEF,GHI,JKL,AAA,ccc,1,2,3 
ABC,DEF,GHI,JKL,BBB,aaa,1,2,3 
ABC,DEF,GHI,JKL,BBB,bbb,1,2,3 
ABC,DEF,GHI,JKL,BBB,ccc,1,2,3 

任何人都可以幫我嗎?

+0

你試過了什麼? – J0e3gan

回答

0

您可以編寫自己的自定義UDF或嘗試下面的方法

input.txt中

ABC,DEF,GHI,JKL,AAA,aaa,1,2,3,bbb,1,2,3,ccc,1,2,3,BBB,aaa,1,2,3,bbb,1,2,3,ccc,1,2,3,CCC,aaa,1,2,3,bbb,1,2,3,ccc,1,2,3 

PigScript:

A = LOAD 'input.txt' USING PigStorage(','); 
B = FOREACH A GENERATE $0,$1,$2,$3, 
         FLATTEN(TOTUPLE($4)), 
         FLATTEN(TOBAG(
            TOTUPLE($5..$8), 
            TOTUPLE($9..$12), 
            TOTUPLE($13..$16) 
            ) 
          ); 
C = FOREACH A GENERATE $0,$1,$2,$3, 
         FLATTEN(TOTUPLE($17)), 
         FLATTEN(TOBAG(
            TOTUPLE($18..$21), 
            TOTUPLE($22..$25), 
            TOTUPLE($26..$29) 
            ) 
          ); 
D = UNION B,C; 
DUMP D 

輸出:

(ABC,DEF,GHI,JKL,AAA,aaa,1,2,3) 
(ABC,DEF,GHI,JKL,AAA,bbb,1,2,3) 
(ABC,DEF,GHI,JKL,AAA,ccc,1,2,3) 
(ABC,DEF,GHI,JKL,BBB,aaa,1,2,3) 
(ABC,DEF,GHI,JKL,BBB,bbb,1,2,3) 
(ABC,DEF,GHI,JKL,BBB,ccc,1,2,3) 
+0

謝謝。有用 – Viru