hadoop mapreduce-sum和按值排序

1zmg4dgp  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(409)

我的一个朋友在hadoop mapreduce上被问到这个问题——我们有多家商店,每家商店都有很多顾客参观和购买东西。数据集由“商店#、客户#、购买数量”组成。需要一个mapreduce代码来获取每个商店的前2名客户。
我想到的解决方案是对数量进行二次排序(按降序-store+qty生成复合键),在reducer中只显示每个键的前2个值(或customers)(store+qty,qty是复合键的一部分)。如果客户是唯一的,这是可行的,但是如果客户多次访问同一家商店,那么我们该怎么做呢?
解决方案是循环遍历每个值,为每个客户添加数量,按减速机中的数量对其进行排序。这意味着我将重新进行排序逻辑,并且不确定是否可以使用treemap/hashmap等,因为可能存在内存限制。
或者解决方法是编写一个接一个运行的2个mapred。第一个是获取每个客户和商店的购买数量的总和。第二个Map按数量排序并获得前2个买家。
还有别的办法吗?还要考虑内存限制吗?

kyvafyod

kyvafyod1#

尝试将组合键作为customer+store,然后使用reducer和map reduce框架,对它们进行分组和计数

相关问题