从 2 个数据集中过滤 AVRO 数据



用例:

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

警报架构具有 machineId : 列类型 int。

如果也依赖于警报,如何从机器中过滤数据?(一对多)。

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

任何例如有来源都会有很大的帮助......

提前感谢...

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

使用 Hadoop 映射两个数据集

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

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

Map
Sort/Partition
Combine (optional)
Reduce

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

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

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

相关内容

  • 没有找到相关文章

最新更新