Je pense que ce que vous voulez do est charger les deux tables, puis effectuer une opération filter.
Si vous avez un fichier appelé table1
qui a contenu
adv1,app1,adg1,camp1
adv2,app3,adg2,camp2
et fichier table2
qui a contenu
adv1,app2,adg2,camp1
adv3,app1,adg3,camp3
adv1,app1,adg4,camp2
vous pouvez effectuer les opérations suivantes:
T = load '{/path/to/table1,/path/to/table2}' using PigStorage(',')
as (adv:chararray, app:chararray, adg:chararray, camp:chararray);
result = filter T by adv == 'adv1';
> dump result
(adv1,app2,adg2,camp1)
(adv1,app1,adg4,camp2)
(adv1,app1,adg1,camp1)
Alternativement, si vous avez deux relations que vous ne chargez pas d'un fichier, vous pouvez utiliser union pour les combiner, puis filtrer.
> dump T1
(adv1,app1,adg1,camp1)
(adv2,app3,adg2,camp2)
> dump T2
(adv1,app2,adg2,camp1)
(adv3,app1,adg3,camp3)
(adv1,app1,adg4,camp2)
T = union T1, T2;
result = filter T by adv == 'adv1';
De plus, si vous essayez de groupe basé sur toutes les clés possibles et pas seulement ADV1, vous pouvez faire un group au lieu d'un filtre pour la dernière ligne.
result = group T by adv;
> dump result
(adv1,{(adv1,app1,adg1,camp1),(adv1,app2,adg2,camp1),(adv1,app1,adg4,camp2)})
(adv2,{(adv2,app3,adg2,camp2)})
(adv3,{(adv3,app1,adg3,camp3)})
merci beaucoup :) –