我想为下面的查询编写一个猪脚本。
输入是:
ABC,DEF,,
,,GHI,JKL
MNO,PQR,,
,,STU,VWX
输出应为:
ABC,DEF,GHI,JKL
MNO,PQR,STU,VWX
有人可以帮助我吗?
答案 0 :(得分:0)
使用本地猪很难解决这个问题。一个选项可以是下载datafu-1.2.0.jar
库并尝试以下方法。
<强> input.txt中强>
ABC,DEF,,
,,GHI,JKL
MNO,PQR,,
,,STU,VWX
<强> PigScript:强>
REGISTER /tmp/datafu-1.2.0.jar;
DEFINE BagSplit datafu.pig.bags.BagSplit();
A = LOAD 'input.txt' USING PigStorage(',') AS(f1,f2,f3,f4);
B = GROUP A ALL;
C = FOREACH B GENERATE FLATTEN(BagSplit(2,$1)) AS mybag;
D = FOREACH C GENERATE FLATTEN(STRSPLIT(REPLACE(BagToString(mybag),'_null_null_null_null',''),'_',4));
E = FOREACH D GENERATE $2,$3,$0,$1;
DUMP E;
<强>输出:强>
(MNO,PQR,STU,VWX)
(ABC,DEF,GHI,JKL)
注意:强> 基于上面的输入格式,我的假设将是第1行最后两个cols将为null,第2行前两个cols将为null,同样对于第3行和第4行也