Hadoop 向Map中传递参数的问题

这种传递参数方式因不一样的API的有些许的不一样,另外应该还有其余的传递方式。本人初学者,遇到这个问题将本身的心得写一下,有什么问题欢迎各位指教…… java


1. 旧式的API: ide

Main函数: 函数

JobConf conf = new JobConf(MainApi.class);
conf.set("fileName",fileName);
而后在本身实现的Map类中 重写public void configure(JobConf job),这个函数。
@Override
	public void configure(JobConf job) {
		// TODO Auto-generated method stub
		//获取配置信息
		fileName = job.get("fileName");
		try {
			ecSpec = XmlParser.generateECSpec(new URL(fileName));
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
2. 新API

样式差很少: oop

Configuration conf = new Configuration();
					
	if(fileName != null && !"".equals(fileName)){

	   conf.set("ECSpec.file.fileName", fileName);
	}
	Job job = new Job(conf, "aggressionEvent");
此处须要注意的地方是必定要先设置完conf后,在用conf生成Job,二者顺序不能乱。

在实现的Map或Reduce中重写:set(Context context)函数: 云计算

@Override
	protected void setup(Context context) throws IOException,
			InterruptedException {
		// TODO Auto-generated method stub

		Configuration conf = context.getConfiguration();
		// 获取配置信息
		fileName = conf.get("ECSpec.file.fileName");
		System.out.println("fileName" + fileName);		
	}


此外若是参数不少,很大能够使用“全局数据文件”的传递的方式,具体可见刘鹏《实战Hadoop:开启通向云计算的捷径》一书中的p167页
内容。
可是我在hadoop1.0.4中,并无找到那些方法,汗
相关文章
相关标签/搜索