public static Map<String, OutputConfig> getNamedOutputs(Configuration conf) { Map<String, OutputConfig> out = Maps.newHashMap(); String serOut = conf.get(CRUNCH_OUTPUTS); if (serOut == null || serOut.isEmpty()) { return out; } for (String input : Splitter.on(RECORD_SEP).split(conf.get(CRUNCH_OUTPUTS))) { List<String> fields = Lists.newArrayList(SPLITTER.split(input)); String name = fields.get(0); FormatBundle<OutputFormat> bundle = FormatBundle.fromSerialized(fields.get(1), conf); try { Class<?> keyClass = Class.forName(fields.get(2)); Class<?> valueClass = Class.forName(fields.get(3)); out.put(name, new OutputConfig(bundle, keyClass, valueClass)); } catch (ClassNotFoundException e) { throw new CrunchRuntimeException(e); } } return out; } private static final String BASE_OUTPUT_NAME = "mapreduce.output.basename";
private static Map<String, OutputConfig> getNamedOutputs( TaskInputOutputContext<?, ?, ?, ?> context) { Map<String, OutputConfig> out = Maps.newHashMap(); Configuration conf = context.getConfiguration(); for (String input : Splitter.on(RECORD_SEP).split(conf.get(CRUNCH_OUTPUTS))) { List<String> fields = Lists.newArrayList(SPLITTER.split(input)); String name = fields.get(0); FormatBundle<OutputFormat> bundle = FormatBundle.fromSerialized(fields.get(1), OutputFormat.class); try { Class<?> keyClass = Class.forName(fields.get(2)); Class<?> valueClass = Class.forName(fields.get(3)); out.put(name, new OutputConfig(bundle, keyClass, valueClass)); } catch (ClassNotFoundException e) { throw new CrunchRuntimeException(e); } } return out; }