GobblinOutputCommitter gobblinOutputCommitter = (GobblinOutputCommitter) context.getOutputCommitter(); gobblinOutputCommitter.getAttemptIdToMultiTaskAttempt() .put(context.getTaskAttemptID().toString(), gobblinMultiTaskAttempt);
@SuppressWarnings("unchecked") private Context createSubContextForHadoop2(Context context, Class<?> mapContextImplClazz) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException { Constructor<?> constructor = mapContextImplClazz.getDeclaredConstructor(Configuration.class, TaskAttemptID.class, RecordReader.class, RecordWriter.class, OutputCommitter.class, StatusReporter.class, InputSplit.class); constructor.setAccessible(true); Object mapContext = constructor.newInstance(outer.getConfiguration(), outer.getTaskAttemptID(), reader, new SubMapRecordWriter(), context.getOutputCommitter(), new SubMapStatusReporter(), outer.getInputSplit()); Class<?> wrappedMapperClazz = Class.forName("org.apache.hadoop.mapreduce.lib.map.WrappedMapper"); Object wrappedMapper = wrappedMapperClazz.newInstance(); Method method = wrappedMapperClazz.getDeclaredMethod("getMapContext", Class.forName("org.apache.hadoop.mapreduce.MapContext")); return (Context) (method.invoke(wrappedMapper, mapContext)); }
@SuppressWarnings("unchecked") private Context createSubContextForHadoop2(Context context, Class<?> mapContextImplClazz) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException { Constructor<?> constructor = mapContextImplClazz.getDeclaredConstructor(Configuration.class, TaskAttemptID.class, RecordReader.class, RecordWriter.class, OutputCommitter.class, StatusReporter.class, InputSplit.class); constructor.setAccessible(true); Object mapContext = constructor.newInstance(outer.getConfiguration(), outer.getTaskAttemptID(), reader, new SubMapRecordWriter(), context.getOutputCommitter(), new SubMapStatusReporter(), outer.getInputSplit()); Class<?> wrappedMapperClazz = Class.forName("org.apache.hadoop.mapreduce.lib.map.WrappedMapper"); Object wrappedMapper = wrappedMapperClazz.newInstance(); Method method = wrappedMapperClazz.getDeclaredMethod("getMapContext", Class.forName("org.apache.hadoop.mapreduce.MapContext")); return (Context) (method.invoke(wrappedMapper, mapContext)); }
GobblinOutputCommitter gobblinOutputCommitter = (GobblinOutputCommitter) context.getOutputCommitter(); gobblinOutputCommitter.getAttemptIdToMultiTaskAttempt() .put(context.getTaskAttemptID().toString(), gobblinMultiTaskAttempt);
GobblinOutputCommitter gobblinOutputCommitter = (GobblinOutputCommitter) context.getOutputCommitter(); gobblinOutputCommitter.getAttemptIdToMultiTaskAttempt() .put(context.getTaskAttemptID().toString(), gobblinMultiTaskAttempt);
@SuppressWarnings("unchecked") private Context createSubContextForHadoop1(Context context) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException { Constructor<?> constructor = Context.class.getDeclaredConstructor(Mapper.class, Configuration.class, TaskAttemptID.class, RecordReader.class, RecordWriter.class, OutputCommitter.class, StatusReporter.class, InputSplit.class); constructor.setAccessible(true); return (Context) constructor.newInstance(mapper, outer.getConfiguration(), outer.getTaskAttemptID(), reader, new SubMapRecordWriter(), context.getOutputCommitter(), new SubMapStatusReporter(), outer.getInputSplit()); }
@SuppressWarnings("unchecked") private Context createSubContextForHadoop1(Context context) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException { Constructor<?> constructor = Context.class.getDeclaredConstructor(Mapper.class, Configuration.class, TaskAttemptID.class, RecordReader.class, RecordWriter.class, OutputCommitter.class, StatusReporter.class, InputSplit.class); constructor.setAccessible(true); return (Context) constructor.newInstance(mapper, outer.getConfiguration(), outer.getTaskAttemptID(), reader, new SubMapRecordWriter(), context.getOutputCommitter(), new SubMapStatusReporter(), outer.getInputSplit()); }