我认为您想要做的是加载两个表,然后执行过滤操作。
如果您有一个名为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)
或者,如果您有两个不是从文件加载的关系,您可以使用联合来组合它们,然后进行过滤。
> 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,那么您可以对最后一行进行分组而不是过滤。
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)})