gpt4 book ai didi

r - 如果 1 个 reducer (RHadoop)的数据变大怎么办?

转载 作者:行者123 更新时间:2023-12-02 18:57:34 24 4
gpt4 key购买 nike

我是大数据和 hadoop 的新手。我尝试使用 mapreduce 找到中位数。据我所知,mapper 将数据传递给 1 个 reducer,然后 1 个 reducer 排序并使用 median() 找到中间值功能。

R 在内存中运行,那么如果数据太大而无法存储在 1 个在 1 台计算机上运行的 reducer 中怎么办?

这是我用 RHadoop 查找中位数的代码示例。

map <- function(k,v) {
key <- "median"
keyval(key, v)
}
reduce <- function(k,v) {
keyval(k, median(v))
}

medianMR <- mapreduce (
input= random, output="/tmp/ex3",
map = map, reduce = reduce
)

最佳答案

视情况而定,如果我们将 Reducer 的数量设置为 0(通过设置 job.setNumreduceTasks(0)),则不会执行任何 reducer,也不会发生聚合。 map 用它的 InputSplit 完成所有任务,而 reducer 不做任何工作。

在您的情况下,这还取决于您是否希望在可能需要超过
1个 reducer 。根据输入集中值的范围和唯一性,您可以引入组合器来输出每个值的频率 - 减少发送到单个 reducer 的 map 输出数量。然后,您的 reducer 可以使用排序值/频率对来识别中位数。

另一种方法,如果你认为你的数据对于 1 个 reducer 来说太粗了,那就是自定义分区器。这通过范围桶分配 key (0-1000 到 reducer 1,1001-2000 到 reducer 3,... reducer n)。这将保证一些辅助工作来分析 reducer 输出并执行最终的中值计算(例如,知道每个 reducer 中的键数,您可以计算哪个 reducer 输出将包含中值。

你可以看看这个可能有帮助的答案 - number of reducers for 1 task in MapReduce

关于r - 如果 1 个 reducer (RHadoop)的数据变大怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59450204/

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