in parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/ContextUtil.java [68:175]
static {
boolean v21 = true;
final String PACKAGE = "org.apache.hadoop.mapreduce";
try {
Class.forName(PACKAGE + ".task.JobContextImpl");
} catch (ClassNotFoundException cnfe) {
v21 = false;
}
useV21 = v21;
Class<?> jobContextCls;
Class<?> taskContextCls;
Class<?> taskIOContextCls;
Class<?> mapCls;
Class<?> mapContextCls;
Class<?> innerMapContextCls;
Class<?> genericCounterCls;
try {
if (v21) {
jobContextCls = Class.forName(PACKAGE + ".task.JobContextImpl");
taskContextCls = Class.forName(PACKAGE + ".task.TaskAttemptContextImpl");
taskIOContextCls = Class.forName(PACKAGE + ".task.TaskInputOutputContextImpl");
mapContextCls = Class.forName(PACKAGE + ".task.MapContextImpl");
mapCls = Class.forName(PACKAGE + ".lib.map.WrappedMapper");
innerMapContextCls = Class.forName(PACKAGE + ".lib.map.WrappedMapper$Context");
genericCounterCls = Class.forName(PACKAGE + ".counters.GenericCounter");
} else {
jobContextCls = Class.forName(PACKAGE + ".JobContext");
taskContextCls = Class.forName(PACKAGE + ".TaskAttemptContext");
taskIOContextCls = Class.forName(PACKAGE + ".TaskInputOutputContext");
mapContextCls = Class.forName(PACKAGE + ".MapContext");
mapCls = Class.forName(PACKAGE + ".Mapper");
innerMapContextCls = Class.forName(PACKAGE + ".Mapper$Context");
genericCounterCls = Class.forName("org.apache.hadoop.mapred.Counters$Counter");
}
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Can't find class", e);
}
try {
JOB_CONTEXT_CONSTRUCTOR = jobContextCls.getConstructor(Configuration.class, JobID.class);
JOB_CONTEXT_CONSTRUCTOR.setAccessible(true);
TASK_CONTEXT_CONSTRUCTOR = taskContextCls.getConstructor(Configuration.class, TaskAttemptID.class);
TASK_CONTEXT_CONSTRUCTOR.setAccessible(true);
GENERIC_COUNTER_CONSTRUCTOR =
genericCounterCls.getDeclaredConstructor(String.class, String.class, Long.TYPE);
GENERIC_COUNTER_CONSTRUCTOR.setAccessible(true);
if (useV21) {
MAP_CONTEXT_CONSTRUCTOR = innerMapContextCls.getConstructor(mapCls, MapContext.class);
MAP_CONTEXT_IMPL_CONSTRUCTOR = mapContextCls.getDeclaredConstructor(
Configuration.class,
TaskAttemptID.class,
RecordReader.class,
RecordWriter.class,
OutputCommitter.class,
StatusReporter.class,
InputSplit.class);
MAP_CONTEXT_IMPL_CONSTRUCTOR.setAccessible(true);
WRAPPED_CONTEXT_FIELD = innerMapContextCls.getDeclaredField("mapContext");
WRAPPED_CONTEXT_FIELD.setAccessible(true);
try {
Class<?> taskAttemptContextClass = Class.forName(PACKAGE + ".TaskAttemptContext");
Method getCounterMethodForTaskAttemptContext =
taskAttemptContextClass.getMethod("getCounter", String.class, String.class);
COUNTER_METHODS_BY_CLASS.put(taskAttemptContextClass, getCounterMethodForTaskAttemptContext);
} catch (ClassNotFoundException e) {
Class<?> taskInputOutputContextClass = Class.forName(PACKAGE + ".TaskInputOutputContext");
Method getCounterMethodForTaskInputOutputContextClass =
taskInputOutputContextClass.getMethod("getCounter", String.class, String.class);
COUNTER_METHODS_BY_CLASS.put(
taskInputOutputContextClass, getCounterMethodForTaskInputOutputContextClass);
}
} else {
MAP_CONTEXT_CONSTRUCTOR = innerMapContextCls.getConstructor(
mapCls,
Configuration.class,
TaskAttemptID.class,
RecordReader.class,
RecordWriter.class,
OutputCommitter.class,
StatusReporter.class,
InputSplit.class);
MAP_CONTEXT_IMPL_CONSTRUCTOR = null;
WRAPPED_CONTEXT_FIELD = null;
COUNTER_METHODS_BY_CLASS.put(
taskIOContextCls, taskIOContextCls.getMethod("getCounter", String.class, String.class));
}
MAP_CONTEXT_CONSTRUCTOR.setAccessible(true);
READER_FIELD = mapContextCls.getDeclaredField("reader");
READER_FIELD.setAccessible(true);
WRITER_FIELD = taskIOContextCls.getDeclaredField("output");
WRITER_FIELD.setAccessible(true);
OUTER_MAP_FIELD = innerMapContextCls.getDeclaredField("this$0");
OUTER_MAP_FIELD.setAccessible(true);
GET_CONFIGURATION_METHOD = Class.forName(PACKAGE + ".JobContext").getMethod("getConfiguration");
INCREMENT_COUNTER_METHOD = Class.forName(PACKAGE + ".Counter").getMethod("increment", Long.TYPE);
} catch (SecurityException e) {
throw new IllegalArgumentException("Can't run constructor ", e);
} catch (NoSuchMethodException e) {
throw new IllegalArgumentException("Can't find constructor ", e);
} catch (NoSuchFieldException e) {
throw new IllegalArgumentException("Can't find field ", e);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Can't find class", e);
}
}