Будет сложно решить эту проблему с использованием родной свиньи. Один из вариантов может быть загружен в библиотеку 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-й строкой, последние два столбца будут нулевыми, вторая строка первых двух столбцов будет равна нулю, аналогично для 3-й и 4-й строки также
Я использовал перекрестное соединение и кубов, но неспособных решить эту проблему. – Viru
Это ваш вход фиксированный формат? т.е. первая строка последних двух столбцов будет нулевой, вторая строка первых двух столбцов будет пустой, 3-я строка последних двух столбцов будет равна null ...? –