Hadoop 从2个数据集中筛选AVRO数据

Hadoop 从2个数据集中筛选AVRO数据,hadoop,mapreduce,avro,Hadoop,Mapreduce,Avro,用例: 我有两台数据集/文件集计算机(父级)和警报(子级) 他们的数据也存储在两个avro文件中,即machine.avro和alert.avro 警报架构有machineId:列类型int. 如果存在对警报的依赖关系,如何从计算机中筛选数据?(一对多) e、 g.获取警报时间在2个时间戳之间的所有机器 任何如与来源将是很大的帮助 提前感谢…在另一个帖子中得到了答案 正在发布来自该线程的评论 根据文档,MapReduce框架包括以下步骤: Map Sort/Partition Combine

用例:

我有两台数据集/文件集计算机(父级)和警报(子级)
他们的数据也存储在两个avro文件中,即machine.avro和alert.avro

警报架构有machineId:列类型int.

如果存在对警报的依赖关系,如何从计算机中筛选数据?(一对多)

e、 g.获取警报时间在2个时间戳之间的所有机器

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


提前感谢…

在另一个帖子中得到了答案

正在发布来自该线程的评论

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

Map
Sort/Partition
Combine (optional)
Reduce
您已经描述了执行联接的一种方法:将所有集合A加载到每个映射器的内存中。你是对的,这是低效的

相反,请注意,如果按键对两个集合进行排序和分区,则可以将一个大联接划分为任意多个小联接。MapReduce按上面步骤(2)中的键对每个映射器的输出进行排序。然后按键对排序后的映射输出进行分区,这样每个减速机就创建一个分区。对于每个唯一键,减速器将接收集合A和集合B中的所有值

要完成连接,Reducer只需输出键和集合B中的更新值(如果存在);否则,从集合A输出键和原始值。要区分集合A和集合B的值,请尝试在映射器的输出值上设置标志