private static OutputFormatProvider getRootOutputFormatProvider(Job job, List<ProvidedOutput> outputsMap) throws ClassNotFoundException { OutputFormatProvider rootOutputFormatProvider; // There are 3 cases possible: // [1] output map is empty: user is not going through our APIs to add output; propagate the job's output format // [2] output map has single output: provided output format is set as the root OutputFormat // [3] output map has multiple outputs: RootOutputFormat is UnsupportedOutputFormat which has RecordWriter that // does not support writing. The OutputCommitter is effectively a no-op, as it runs as the RootOutputCommitter // in MultipleOutputsCommitter. if (outputsMap.isEmpty()) { rootOutputFormatProvider = new BasicOutputFormatProvider(job.getOutputFormatClass().getName(), Collections.emptyMap()); } else if (outputsMap.size() == 1) { rootOutputFormatProvider = outputsMap.get(0).getOutputFormatProvider(); } else { rootOutputFormatProvider = new BasicOutputFormatProvider(UnsupportedOutputFormat.class.getName(), Collections.emptyMap()); } return rootOutputFormatProvider; } }
private static OutputFormatProvider getRootOutputFormatProvider(Job job, List<ProvidedOutput> outputsMap) throws ClassNotFoundException { OutputFormatProvider rootOutputFormatProvider; // There are 3 cases possible: // [1] output map is empty: user is not going through our APIs to add output; propagate the job's output format // [2] output map has single output: provided output format is set as the root OutputFormat // [3] output map has multiple outputs: RootOutputFormat is UnsupportedOutputFormat which has RecordWriter that // does not support writing. The OutputCommitter is effectively a no-op, as it runs as the RootOutputCommitter // in MultipleOutputsCommitter. if (outputsMap.isEmpty()) { rootOutputFormatProvider = new BasicOutputFormatProvider(job.getOutputFormatClass().getName(), Collections.emptyMap()); } else if (outputsMap.size() == 1) { rootOutputFormatProvider = outputsMap.get(0).getOutputFormatProvider(); } else { rootOutputFormatProvider = new BasicOutputFormatProvider(UnsupportedOutputFormat.class.getName(), Collections.emptyMap()); } return rootOutputFormatProvider; } }
@Override public void prepareRun(BatchSinkContext context) throws Exception { OutputFormatProvider outputFormatProvider = new BasicOutputFormatProvider(TextOutputFormat.class.getCanonicalName(), ImmutableMap.of(TextOutputFormat.OUTDIR, config.dirName)); if (config.name != null) { Output output = Output.of(config.name, outputFormatProvider); output.alias(config.alias); context.addOutput(output); } else { context.addOutput(Output.of(config.alias, outputFormatProvider)); } }