Search in sources :

Example 1 with AbstractMapReduce

use of io.cdap.cdap.api.mapreduce.AbstractMapReduce in project cdap by caskdata.

the class MapReduceRuntimeService method beforeSubmit.

/**
 * For MapReduce programs created after 3.5, calls the initialize method of the {@link ProgramLifecycle}.
 * This method also sets up the Input/Output within the same transaction.
 */
private void beforeSubmit(final Job job) throws Exception {
    context.setState(new ProgramState(ProgramStatus.INITIALIZING, null));
    // AbstractMapReduce implements final initialize(context) and requires subclass to
    // implement initialize(), whereas programs that directly implement MapReduce have
    // the option to override initialize(context) (if they implement ProgramLifeCycle)
    TransactionControl defaultTxControl = context.getDefaultTxControl();
    TransactionControl txControl = mapReduce instanceof AbstractMapReduce ? Transactions.getTransactionControl(defaultTxControl, AbstractMapReduce.class, mapReduce, "initialize") : mapReduce instanceof ProgramLifecycle ? Transactions.getTransactionControl(defaultTxControl, MapReduce.class, mapReduce, "initialize", MapReduceContext.class) : defaultTxControl;
    context.initializeProgram(programLifecycle, txControl, false);
    // once the initialize method is executed, set the status of the MapReduce to RUNNING
    context.setState(new ProgramState(ProgramStatus.RUNNING, null));
    ClassLoader oldClassLoader = ClassLoaders.setContextClassLoader(context.getProgramInvocationClassLoader());
    try {
        // set input/outputs info, and get one of the configured mapper's TypeToken
        TypeToken<?> mapperTypeToken = setInputsIfNeeded(job);
        setOutputsIfNeeded(job);
        setOutputClassesIfNeeded(job, mapperTypeToken);
        setMapOutputClassesIfNeeded(job, mapperTypeToken);
    } finally {
        ClassLoaders.setContextClassLoader(oldClassLoader);
    }
}
Also used : ProgramLifecycle(io.cdap.cdap.api.ProgramLifecycle) AbstractMapReduce(io.cdap.cdap.api.mapreduce.AbstractMapReduce) TransactionControl(io.cdap.cdap.api.annotation.TransactionControl) ProgramState(io.cdap.cdap.api.ProgramState)

Aggregations

ProgramLifecycle (io.cdap.cdap.api.ProgramLifecycle)1 ProgramState (io.cdap.cdap.api.ProgramState)1 TransactionControl (io.cdap.cdap.api.annotation.TransactionControl)1 AbstractMapReduce (io.cdap.cdap.api.mapreduce.AbstractMapReduce)1