那些被稱爲generic options。 因此,爲了支持這些,你的工作應該實現工具。
運行你的工作一樣 -
hadoop jar yourfile.jar [mainClass] args -libjars <comma seperated list of jars>
編輯:
要實現工具和擴展配置,你做這樣的事情在你的MapReduce應用程序 -
public class YourClass extends Configured implements Tool {
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new YourClass(), args);
System.exit(res);
}
public int run(String[] args) throws Exception
{
//parse you normal arguments here.
Configuration conf = getConf();
Job job = new Job(conf, "Name of job");
//set the class names etc
//set the output data type classes etc
//to accept the hdfs input and outpur dir at run time
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
return job.waitForCompletion(true) ? 0 : 1;
}
}
這是我的命令「[admin1 @ tisrv01 workspace] $ hadoop jar ttcnClearness-1.0.0-snapshot.jar /user/zhouuyud/input/input/ns30triplexs-2013-09-11--1633.bz2/user/zhouuyud/output/-libjars ../workspace/lib/*.jar「。但是,我得到一個異常,因爲在main main方法中,我將檢查參數長度,將-libjars xxxx傳遞給main main方法。這樣對嗎? –
你不需要自己處理-libjars選項,ToolRunner會爲你做這件事,並過濾掉上面鏈接通用選項中包含的Hadoop相關選項。添加了代碼以顯示如何實現工具和擴展配置。 –
我明白了,非常感謝。 :) –