gpt4 book ai didi

hadoop获取映射器的实际数量

转载 作者:可可西里 更新时间:2023-11-01 14:31:51 24 4
gpt4 key购买 nike

在我程序的映射阶段,我需要知道创建的映射器总数。这将帮助我完成映射的键创建过程(我想为每个对象发出与映射器数量一样多的键值对)。

我知道设置映射器的数量只是一个提示,但是如何获取映射器的实际数量。我在 Mapper 的配置方法中尝试了以下操作:

public void configure(JobConf conf) {
System.out.println("map tasks: "+conf.get("mapred.map.tasks"));
System.out.println("tipid: "+conf.get("mapred.tip.id"));
System.out.println("taskpartition: "+conf.get("mapred.task.partition"));
}

但是我得到了结果:

map tasks: 1
tipid: task_local1204340194_0001_m_000000
taskpartition: 0
map tasks: 1
tipid: task_local1204340194_0001_m_000001
taskpartition: 1

这意味着(?)有两个 map task ,而不是打印出来的一个(这很自然,因为我有两个小的输入文件)。 map任务后的数字不应该是2吗?

现在,我只计算输入文件夹中的文件数量,但这不是一个好的解决方案,因为一个文件可能大于 block 大小并导致多个输入拆分,从而导致多个映射器。有什么建议吗?

最佳答案

最后,当我生成可执行 jar 文件并在集群/本地运行我的程序时,conf.get("mapred.map.tasks")) 似乎确实有效。现在“ map task ”的输出是正确的。

仅当从 eclipse-plugin 在 hadoop 上本地运行我的 mapreduce 程序时,它才不工作。也许这是 eclipse-plugin 的问题。

我希望这能帮助遇到同样问题的其他人。感谢您的回答!

关于hadoop获取映射器的实际数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19299267/

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