2014-11-24 59 views
0

用例:
过滤AVRO数据从2集

我有2个数据集/文件集机(父)和警报(儿童)。
他们的数据也存储在两个avro文件中,即machine.avro和alert.avro。

警报模式有machineId:列类型int。

如果还存在对警报的依赖性,如何过滤机器中的数据? (一到多)。

例如获取警报时间在2个时间戳之间的所有机器。

任何例如与来源将是很大的帮助......

在此先感谢...

回答

0

得到的答案在另一个线程....

Mapping through two data sets with Hadoop

从该线程发布评论...

根据文档,MapReduce框架包括以下步骤:

Map 
Sort/Partition 
Combine (optional) 
Reduce 

您已经描述了一种执行连接的方法:将每个映射器中的所有集合A加载到内存中。你是正确的,这是低效的。

请注意,如果两个集合都按键排序和分区,则可以将大连接分割成任意多个较小的连接。 MapReduce在上面的步骤(2)中通过键对每个映射器的输出进行排序。 Sorted Map输出然后按键分区,以便每个Reducer创建一个分区。对于每个唯一键,Reducer将接收来自Set A和Set B的所有值。

要完成加入,Reducer只需要输出密钥和Set B中的更新值(如果存在);否则,从Set A输出密钥和原始值。要区分来自Set A和Set B的值,请尝试在Mapper的输出值上设置一个标志。