Hadoop 带AWS EMR S3的多路输出

Hadoop 带AWS EMR S3的多路输出,hadoop,amazon-web-services,amazon-s3,mapreduce,amazon-emr,Hadoop,Amazon Web Services,Amazon S3,Mapreduce,Amazon Emr,我的工作是使用多个输出编写输出。该程序使用普通Hadoop集群提供输出 但是,当我使用AWS集群并为多个输出提供s3n路径时,如下图所示,我在指定的s3n路径中没有得到任何输出。有人能帮我吗 Configuration config3 = new Configuration(); JobConf conf3 = new JobConf(config3, t1debugJob.class); conf3.setJobName("PJob3.7 scalability test correct 60

我的工作是使用多个输出编写输出。该程序使用普通Hadoop集群提供输出

但是,当我使用AWS集群并为多个输出提供s3n路径时,如下图所示,我在指定的s3n路径中没有得到任何输出。有人能帮我吗

Configuration config3 = new Configuration();
JobConf conf3 = new JobConf(config3, t1debugJob.class);
conf3.setJobName("PJob3.7 scalability test correct 60r");
conf3.setOutputKeyClass(Text.class);
conf3.setOutputValueClass(Text.class);
conf3.setMapOutputKeyClass(StockKey.class);
conf3.setMapOutputValueClass(Text.class);   
conf3.setPartitionerClass(CustomPartitionerStage3.class);
conf3.setOutputValueGroupingComparator(StockKeyGroupingComparator.class);
conf3.setOutputKeyComparatorClass(StockKeySortComparator.class);
conf3.setReducerClass(dt1Amazon.class);
   //conf3.setNumMapTasks(10);
conf3.setNumReduceTasks(30);
conf3.setInputFormat(TextInputFormat.class);
conf3.setOutputFormat(TextOutputFormat.class);
MultipleInputs.addInputPath(conf3, new  Path(other_args.get(2)),TextInputFormat.class, PMap3aPos.class);
MultipleInputs.addInputPath(conf3, new  Path(other_args.get(1)),TextInputFormat.class, PMap3b.class);
MultipleOutputs.addNamedOutput(conf3,"s3n://gs3test/output/MIDPairspos/pairfile", TextOutputFormat.class, LongWritable.class, Text.class);
MultipleOutputs.addNamedOutput(conf3,"s3n://gs3test/output/MIDpos/idfile", TextOutputFormat.class, LongWritable.class, Text.class);                               
FileOutputFormat.setOutputPath(conf3, new Path(other_args.get(3)));                 
JobClient.runJob(conf3);

谢谢

嗯,看起来S3上缺少身份验证。。。您在配置文件中定义了吗?设置fs.default.name s3://BUCKET fs.s3.awsAccessKeyId fs.s3.awsSecretAccessKey SECRET访问密钥和访问密钥。我解决了这个问题。自定义分区、分组和排序没有按照作业配置中的指定进行。不知道为什么会发生以及如何修复。