@Override
public Configuration getServiceConfiguration(final AllocatedEvaluator allocatedEvaluator) {
try {
final NumberedSplit<InputSplit> numberedSplit =
this.evaluatorToPartitionMapper.getInputSplit(
allocatedEvaluator.getEvaluatorDescriptor().getNodeDescriptor().getName(),
allocatedEvaluator.getId());
final Configuration serviceConfiguration = ServiceConfiguration.CONF
.set(ServiceConfiguration.SERVICES,
this.inMemory ? InMemoryInputFormatDataSet.class : InputFormatDataSet.class)
.build();
return Tang.Factory.getTang().newConfigurationBuilder(serviceConfiguration)
.bindImplementation(
DataSet.class,
this.inMemory ? InMemoryInputFormatDataSet.class : InputFormatDataSet.class)
.bindNamedParameter(JobConfExternalConstructor.InputFormatClass.class, inputFormatClass)
.bindNamedParameter(JobConfExternalConstructor.InputPath.class, inputPath)
.bindNamedParameter(
InputSplitExternalConstructor.SerializedInputSplit.class,
WritableSerializer.serialize(numberedSplit.getEntry()))
.bindConstructor(InputSplit.class, InputSplitExternalConstructor.class)
.bindConstructor(JobConf.class, JobConfExternalConstructor.class)
.build();
} catch (final BindException ex) {
final String evalId = allocatedEvaluator.getId();
final String msg = "Unable to create configuration for evaluator " + evalId;
LOG.log(Level.WARNING, msg, ex);
throw new RuntimeException(msg, ex);
}
}