gpt4 book ai didi

java - Hadoop MapReduce - 按值求和和排序

转载 作者:可可西里 更新时间:2023-11-01 14:23:55 25 4
gpt4 key购买 nike

我的一个 friend 在 hadoop MapReduce 上被问到这个问题 - 我们有多家商店,每家商店都有很多顾客来参观和购买东西。数据集由“Store#、Customer#、Quantity purchased”组成。需要 MapReduce 代码来获取每家商店的前 2 位客户。

我想到的解决方案是对 qty 进行二次排序(按降序排列 - store + qty 构成复合键)并且在 reducer 中只显示每个键(store + qty)的前 2 个值(或客户) , qty 是复合键的一部分)。如果客户是唯一的,这就可行,但如果客户多次访问同一家商店,那么我们该怎么做呢?

解决方案是遍历每个值,为每个客户添加数量,在缩减程序中按数量排序。这意味着我将重新执行排序逻辑并且不确定我是否可以使用 TreeMap/Hashmap 等,因为可能存在内存限制。

或者解决方案是编写 2 个依次运行的 MapRed。第一个获取每个客户和商店的购买数量总和。第二个 MapRed 按数量排序并获得前 2 位买家。

还有其他实现方法吗?还考虑内存限制?

最佳答案

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

关于java - Hadoop MapReduce - 按值求和和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30864507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com