用例:
过滤AVRO数据从2集
我有2个数据集/文件集机(父)和警报(儿童)。
他们的数据也存储在两个avro文件中,即machine.avro和alert.avro。
警报模式有machineId:列类型int。
如果还存在对警报的依赖性,如何过滤机器中的数据? (一到多)。
例如获取警报时间在2个时间戳之间的所有机器。
任何例如与来源将是很大的帮助......
在此先感谢...
用例:
过滤AVRO数据从2集
我有2个数据集/文件集机(父)和警报(儿童)。
他们的数据也存储在两个avro文件中,即machine.avro和alert.avro。
警报模式有machineId:列类型int。
如果还存在对警报的依赖性,如何过滤机器中的数据? (一到多)。
例如获取警报时间在2个时间戳之间的所有机器。
任何例如与来源将是很大的帮助......
在此先感谢...
得到的答案在另一个线程....
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的输出值上设置一个标志。