我正在使用hadoop,我必须创建一个自定义的inputformat。为此,我重写了inputformat和recordreader类,就像这里解释的那样我想访问作业的配置(在运行作业之前访问一些变量集)。我可以访问“taskattemptcontext”并从中获取配置对象,但这不是作业的全局配置。我不知道我想要的是不是可能的,但如果你有一个想法的话会很有帮助。谢谢。
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
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);
mctunoxg3#
最后,taskattemptcontext包含全局配置,我可能犯了一个错误。因此,可以将变量从launcher main()传递到inputformat。
3条答案
按热度按时间mbjcgjjk1#
taskattempcontext将包含作业级配置。层次结构是
dl5txlt92#
不确定这是否解决了你的问题。
在驱动程序代码中,设置配置中的参数
在Map器/还原器中使用
mctunoxg3#
最后,taskattemptcontext包含全局配置,我可能犯了一个错误。因此,可以将变量从launcher main()传递到inputformat。