Amazon Elastic Mapreduce で Hadoop ジョブを実行しようとしています。データと jar が aws s3 にあります。ジョブフローをセットアップするとき、JAR引数を次のように渡します
s3n://my-hadoop/input s3n://my-hadoop/output
以下は私のhadoopの主な機能です
public static void main(String[] args) throws Exception
{
Configuration conf = new Configuration();
Job job = new Job(conf, "MyMR");
job.setJarByClass(MyMR.class);
job.setMapperClass(MyMapper.class);
job.setReducerClass(CountryReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setInputFormatClass(TextInputFormat.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
ただし、私のジョブフローは stderr の次のログで失敗します
Exception in thread "main" java.lang.ClassNotFoundException: s3n://my-hadoop/input
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.hadoop.util.RunJar.main(RunJar.java:180)
では、aws emr で入力パスと出力パスを指定するにはどうすればよいですか?