我有2个数据集。
Set A有许多事件,每个事件都发生在一个日期,每个日期有多个事件。例如:
10/23/2015, event1
10/23/2015, event2
9/17/2014, event3
B组每个日期都有天气观测值。每个日期只有一次观察。例如:
10/23/2015, obs1
10/22/2015, obs2
9/17/2014, obs3
我想在每个事件中附上各自日期的天气观察,例如:
10/23/2015, event1, obs1
10/23/2015, event2, obs1
9/17/2014, event3, obs3
我认为这可以通过按日期对集合A进行分组,按日期对集合B进行内部联接,然后展平结果来实现。
有人请告诉我这是否是最好的方法,并告诉我使用的代码?感谢
答案 0 :(得分:0)
不需要分组和展平。只需加入,您就必须删除重复的date
列。
a = LOAD 'datasetA.txt' USING PigStorage(',') as (date:chararray, evt:chararray);
b = LOAD 'datasetB.txt' USING PigStorage(',') as (date:chararray, obs:chararray);
c_join = a JOIN b ON a.date == b.date;
c = FOREACH c_join GENERATE a::date, a::evt, b::obs;
输出
dump c;
(9/17/2014, event3, obs3)
(10/23/2015, event2, obs1)
(10/23/2015, event1, obs1)