@Override
	public void prepare() throws Exception {
		final TaskConfig config = this.taskContext.getTaskConfig();
		this.strategy = config.getDriverStrategy();

		switch (this.strategy) {
			case ALL_GROUP_REDUCE_COMBINE:
				if (!(this.taskContext.getStub() instanceof GroupCombineFunction)) {
					throw new Exception("Using combiner on a UDF that does not implement the combiner interface " + GroupCombineFunction.class.getName());
				}
			case ALL_GROUP_REDUCE:
			case ALL_GROUP_COMBINE:
				break;
			default:
				throw new Exception("Unrecognized driver strategy for AllGroupReduce driver: " + this.strategy.name());
		}

		this.serializer = this.taskContext.<IT>getInputSerializer(0).getSerializer();
		this.input = this.taskContext.getInput(0);

		ExecutionConfig executionConfig = taskContext.getExecutionConfig();
		this.objectReuseEnabled = executionConfig.isObjectReuseEnabled();

		if (LOG.isDebugEnabled()) {
			LOG.debug("AllGroupReduceDriver object reuse: " + (this.objectReuseEnabled ? "ENABLED" : "DISABLED") + ".");
		}
	}
@ Override public void prepare ( ) throws Exception { final TaskConfig config = this . taskContext . getTaskConfig ( ) ; this . strategy = config . getDriverStrategy ( ) ; switch ( this . strategy ) { case ALL_GROUP_REDUCE_COMBINE : if ( ! ( this . taskContext . getStub ( ) instanceof GroupCombineFunction ) ) { throw new Exception ( "Using combiner on a UDF that does not implement the combiner interface " + GroupCombineFunction . class . getName ( ) ) ; } case ALL_GROUP_REDUCE : case ALL_GROUP_COMBINE : break ; default : throw new Exception ( "Unrecognized driver strategy for AllGroupReduce driver: " + this . strategy . name ( ) ) ; } this . serializer = this . taskContext . < IT > getInputSerializer ( 0 ) . getSerializer ( ) ; this . input = this . taskContext . getInput ( 0 ) ; ExecutionConfig executionConfig = taskContext . getExecutionConfig ( ) ; this . objectReuseEnabled = executionConfig . isObjectReuseEnabled ( ) ; if ( LOG . isDebugEnabled ( ) ) { LOG . debug ( "AllGroupReduceDriver object reuse: " + ( this . objectReuseEnabled ? "ENABLED" : "DISABLED" ) + "." ) ; } }
--------------------------------------------------------------------------------------------