繁体   English   中英

在Hadoop map-reduce中对联接的数据进行分组

[英]Grouping joined data in Hadoop map-reduce

我有两种不同类型的文件,一种是用户列表。 它具有以下结构: UserID,Name,CountryID

第二种类型是订单列表: OrderID,UserID,OrderSum

每个用户都有很多订单。 我需要编写map-reduce hadoop作业(在Java中)并接收具有以下结构的输出: CountryID,NumOfUsers,MinOrder,MaxOrder

对于我来说,编写两个不同的映射器(针对每种文件类型)和一个简化器以通过UserID 合并来自两个文件的数据并接收以下结构对我来说不是问题: UserID,CountryID,UsersMinOrder,UsersMaxOrder

但是我不明白如何按CountryID将数据分组?

我建议通过Pig或Hive运行此程序,因为您只需几行就可以解决此类问题。

如果失败,我将执行以下操作。 在联接的数据上运行另一个MapReduce作业,然后执行以下操作:在映射器中,对于每个输入拆分,请保留每个国家/地区ID的最小顺序,最大顺序和元组(具有唯一用户ID的行)数量的标签。 只有几个国家/地区,因此您可以在整个地图工作中将这些统计信息保留在内存中。 拆分结束时,将累积的统计信息输出到以国家/地区ID为键的减速器。 然后,reducer可以简单地合并每个拆分的汇总数据,以找到全局最大值,最小值和计数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM