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中,並無找到那些方法,汗
相關文章
相關標籤/搜索