我正在使用Hadoop,我必须创建一个自定义的InputFormat。
为此,我重写了InputFormat和RecordReader类,就像它解释here
我想访问作业的配置(在运行作业之前访问某些变量集)。我可以访问“ TaskAttemptContext ”并从中获取配置对象,但这不是作业的全局配置。
我不知道我想要的是否可能,但如果你有一个想法,那将非常有用。
感谢。
答案 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