我在EMR主控主机上运行MR作业。 我的输入文件在S3中,并通过Hcatalog将输出设置为Hive中的表。 作业运行成功,我确实看到reducers输出行,但看到S3新分区文件夹,我只能看到MR 0字节SUCCESS文件,但没有实际的数据文件。 注意 - 当reducer阶段开始时,我确实看到文件写入到临时文件夹中的S3,但似乎最后一个操作将文件抛出到某处。 我没有在MR日志中看到任何错误。
相关的MR驱动程序代码:“
Job job = Job.getInstance();
job.setJobName(“构建事件”);
job.setJarByClass(LoggersApp.class);
job.getConfiguration()。set(“fs.defaultFS”,“s3:// my-bucket”);
//设置输入路径Path [] inputPaths =“s3上的文件”;
FileInputFormat.setInputPaths(job,inputPaths); //设置输入输出
format job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(HCatOutputFormat.class);
_configureOutputTable(作业);
private void _setReducer(Job job){
job.setReducerClass(Reducer.class);
job.setOutputValueClass(DefaultHCatRecord.class); }private void _configureOutputTable(作业作业)抛出IOException {
OutputJobInfo jobInfo =OutputJobInfo.create(_cli.getOptionValue( “蜂房DBNAME”), _cli.getOptionValue(“output-table”),null); HCatOutputFormat.setOutput(job,jobInfo); HCatSchema架构= HCatOutputFormat.getTableSchema(job.getConfiguration());
HCatFieldSchema partitionDate = new HCatFieldSchema(“date”, TypeInfoFactory.stringTypeInfo,null); HCatFieldSchema
partitionBatchId = new HCatFieldSchema(“batch_id”,
TypeInfoFactory.stringTypeInfo,null);
schema.append(partitionDate); schema.append(partitionBatchId);
HCatOutputFormat.setSchema(job,schema); }
任何帮助?