Diciamo che JOIN
due relazioni come:Come rimuovere le colonne duplicate dopo un JOIN in Pig?
-- part looks like:
-- 1,5.3
-- 2,4.9
-- 3,4.9
-- original looks like:
-- 1,Anju,3.6,IT,A,1.6,0.3
-- 2,Remya,3.3,EEE,B,1.6,0.3
-- 3,akhila,3.3,IT,C,1.3,0.3
jnd = JOIN part BY $0, original BY $0;
l'uscita sarà:
1,5.3,1,Anju,3.6,IT,A,1.6,0.3
2,4.9,2,Remya,3.3,EEE,B,1.6,0.3
3,4.9,3,akhila,3.3,IT,C,1.3,0.3
noti che $0
viene mostrato due volte in ogni tupla. EG:
1,5.3,1,Anju,3.6,IT,A,1.6,0.3
^ ^
|-----|
posso rimuovere la chiave duplicata manualmente facendo:
jnd = foreach jnd generate $0,$1,$3,$4 ..;
C'è un modo per rimuovere questo in modo dinamico? Mi piace remove(the duplicate key joiner)
.
Per quanto ne so non c'è modo di farlo al momento con Pig.Inoltre, l'unico modo diverso dalla tua attuale soluzione a cui posso pensare è 'FOREACH foo GENERATE FLATTEN (remove (TOTUPLE (*), 2));' dove '2' è la posizione della colonna da rimuovere e' remove' è un UDF. Penso che la tua soluzione sia molto migliore, tuttavia puoi abbreviare a 'FOREACH jnd GENERATE $ 0, $ 1, $ 3 ..'. – mr2ert
Vorrei che ci fosse un modo per farlo più facile, ma qui c'è una bella sintassi per definire manualmente l'output del join: http://stackoverflow.com/a/17273031/542620 – Freerobots