可以在Map器中使用configuration.set吗?

ev7lccsx  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(299)

我正在尝试将一些数据从Map器保存到job/main,以便在其他作业中使用它。
我试图在我的主类(包含main函数)中使用一个静态变量,但是当Map器向静态变量添加数据,并且我尝试在完成任务后打印变量时,我发现没有新数据,这就像Map器修改了该静态变量的另一个示例一样。。
现在我尝试使用配置来设置Map器中的数据:
制图器

context.getConfiguration().set("3", "somedata");

主要的

boolean step1Completed = step1.waitForCompletion(true);
System.out.println(step1.getConfiguration().get("3"));

不幸的是这个指纹 null .
还有别的方法吗?我正试图保存一些数据,以便在其他工作中使用它,我发现仅为此使用文件有点极端,因为数据只是 int,string 绘制一些我在上一份工作中需要的标题。

yshpjwxd

yshpjwxd1#

我一知道就不可能了。Map器和还原器以分布式方式独立工作。每个任务都有自己的本地conf示例。当每个作业都是独立的时,您必须将数据持久化到hdfs。
您还可以利用mapreduce链接机制(示例)来运行作业链。此外,您可以在azkaban、oozie等中设计工作流,以将输出传递给另一个作业。

fgw7neuy

fgw7neuy2#

这确实是不可能的,因为配置是从作业到Map器/缩减器的,而不是相反。在上一个作业的设置中,我只是直接从hdfs读取文件。
谢谢大家的意见。

相关问题