Apache Pig Group / Flatten / Join

时间:2015-12-02 13:23:33

标签: hadoop apache-pig bigdata

我有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进行内部联接,然后展平结果来实现。

有人请告诉我这是否是最好的方法,并告诉我使用的代码?感谢

1 个答案:

答案 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)