2015-12-02 44 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)