gpt4 book ai didi

hadoop - 在reducer中设置并读取驱动程序的Hadoop变量

转载 作者:行者123 更新时间:2023-12-02 20:12:48 27 4
gpt4 key购买 nike

如何在化简器中设置变量,在所有任务完成执行后,驱动程序可以读取该变量在执行之后?就像是:

class Driver extends Configured implements Tool{
public int run(String[] args) throws Exception {
...
JobClient.runJob(conf); // reducer sets some variable
String varValue = ...; // variable value is read by driver
}
}

替代方法

我想出了这个“丑陋”的解决方法。主要思想是创建一组计数器,其中仅包含一个计数器,该计数器的名称是您希望返回的值(忽略实际计数器值)。代码如下:
// reducer || mapper
reporter.incrCounter("Group name", "counter name -> actual value", 0);

// driver
RunningJob runningJob = JobClient.runJob(conf);
String value = runningJob.getCounters().getGroup("Group name").iterator().next().getName();

映射器也一样。尽管这解决了我的问题,但我认为这种解决方案是“丑陋的”。因此,我 将问题保留为

最佳答案

您无法修改map / reduce任务中的配置,并且不能期望更改将继续保留在其他任务和/或提交作业的作业客户端中的配置(假设您在化简器中写入了不同的值-一个“赢” '并坚持回来吗?)。

但是,您可以自己将文件写入HDFS,然后在作业返回时可以将其读回-确实很丑,但是没有一种方法不会牵扯到拥有该值(value)的另一种技术(Zookeeper,HBase或任何其他NoSQL / RDB)从任务结束到您能够在工作成功后获取值(value)之间。

关于hadoop - 在reducer中设置并读取驱动程序的Hadoop变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11565494/

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