从RecordReader / InputFormat访问作业的配置

时间:2014-06-20 08:51:01

标签: hadoop mapreduce

我正在使用Hadoop,我必须创建一个自定义的InputFormat。

为此,我重写了InputFormat和RecordReader类,就像它解释here

我想访问作业的配置(在运行作业之前访问某些变量集)。我可以访问“ TaskAttemptContext ”并从中获取配置对象,但这不是作业的全局配置。

我不知道我想要的是否可能,但如果你有一个想法,那将非常有用。

感谢。

3 个答案:

答案 0 :(得分:1)

最后,TaskAttemptContext包含全局配置,我可能犯了一个错误。因此,可以将变量从启动器main()传递给InputFormat。

答案 1 :(得分:0)

不确定这是否解决了您的问题。

在驱动程序代码中,在配置中设置参数

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

使用

在mapper / reducer中访问相同的内容
Configuration conf = context.getConfiguration();
int myParam = conf.getInt("paramname", 0);

答案 2 :(得分:0)

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