2015-12-02 64 views
0

我有2个数据集。Apache Pig集团/拼合/加入

集合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

这些是记录一个每行或者是一个创纪录的3元组?或者到目前为止加载这些数据集的代码是什么? –

+0

每行一个,对于混淆抱歉。 我基本上想在Pig中做什么,你会在excel中调用一个vlookup:从Set A中取一个事件,在set B中查找它的日期,并从set B中取出观察值。 –

回答

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)