我想你想要什麼do加載兩個表,然後執行filter操作。
如果你有一個名爲table1
文件有內容
adv1,app1,adg1,camp1
adv2,app3,adg2,camp2
和文件table2
有內容
adv1,app2,adg2,camp1
adv3,app1,adg3,camp3
adv1,app1,adg4,camp2
那麼你就可以做到以下幾點:
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)
另外,如果你有兩個你沒有從a加載的關係文件,您可以使用union來合併它們,然後進行過濾。
> 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';
此外,如果您是根據所有可能的密鑰試圖組,不只是ADV1,那麼你可以做一個group,而不是最後一行的過濾器。
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)})
非常感謝:) – 2012-08-01 08:50:04