【发布时间】:2013-01-29 18:57:07
【问题描述】:
我正在尝试在 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 中指定我的输入和输出路径?
【问题讨论】:
标签: hadoop amazon-web-services amazon-s3 amazon-emr emr