从recordreader/inputformat访问作业的配置

gijlo24d  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(298)

我正在使用hadoop,我必须创建一个自定义的inputformat。
为此,我重写了inputformat和recordreader类,就像这里解释的那样
我想访问作业的配置(在运行作业之前访问一些变量集)。我可以访问“taskattemptcontext”并从中获取配置对象,但这不是作业的全局配置。
我不知道我想要的是不是可能的,但如果你有一个想法的话会很有帮助。
谢谢。

mbjcgjjk

mbjcgjjk1#

taskattempcontext将包含作业级配置。层次结构是

JobContext - contains job level context

TaskAttemptContext - contains TaskAttempt level context + JobContext

TaskInputOutputContext - contains TaskInputOutput level context + TaskAttemptContext +   JobContext

MapContext - contains Mapper specific context + TaskInputOutputContext + TaskAttemptContext +   JobContext

ReduceContext - contains Reducer specific context + TaskInputOutputContext + TaskAttemptContext +   JobContext
dl5txlt9

dl5txlt92#

不确定这是否解决了你的问题。
在驱动程序代码中,设置配置中的参数

Configuration conf = new Configuration();
conf.setInt ("paramname",value);
Job job = new Job(conf);

在Map器/还原器中使用

Configuration conf = context.getConfiguration();
int myParam = conf.getInt("paramname", 0);
mctunoxg

mctunoxg3#

最后,taskattemptcontext包含全局配置,我可能犯了一个错误。因此,可以将变量从launcher main()传递到inputformat。

相关问题