Apache Pig Group / 展平 / 加入
Posted
技术标签:
【中文标题】Apache Pig Group / 展平 / 加入【英文标题】:Apache Pig Group / Flatten / Join 【发布时间】:2015-12-02 13:23:32 【问题描述】:我有 2 个数据集。
集合 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 进行内部连接,然后展平结果来实现。
有人可以告诉我这是否是最好的方法,并告诉我要使用的代码吗?谢谢
【问题讨论】:
这些记录是每行一个还是单个记录 3 个元组?或者到目前为止你有什么代码来加载这些数据集? 每行一个,很抱歉造成混淆。我基本上想在 Pig 中执行您在 excel 中称为 vlookup 的操作:从集合 A 中获取一个事件,在集合 B 中查找它的日期,然后从集合 B 中提取观察结果。 【参考方案1】:不需要分组和展平。只是一个连接,然后你必须删除重复的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)
【讨论】:
以上是关于Apache Pig Group / 展平 / 加入的主要内容,如果未能解决你的问题,请参考以下文章
展平 python 数据框中的条目,如 Apache PIG 包
apache-Pig map-reduce group by error