@Override public Value<ResultAndCounters<List<AppEngineFile>>> run() { @SuppressWarnings("unchecked") PromisedValue<ResultAndCounters<List<AppEngineFile>>> result = (PromisedValue) newPromise(ResultAndCounters.class); String shardedJobId = mrJobId + "-map"; List<? extends InputReader<I>> readers = Util.createReaders(mrSpec.getInput()); Output<KeyValue<K, V>, List<AppEngineFile>> output = new IntermediateOutput<K, V>( mrJobId, readers.size(), mrSpec.getIntermediateKeyMarshaller(), mrSpec.getIntermediateValueMarshaller()); startShardedJob( mrSpec.getJobName() + " (map phase)", shardedJobId, new CountersImpl(), readers, output, Util.createWriters(output), new TaskCreator<I, KeyValue<K, V>, MapperContext<K, V>>() { @Override public WorkerShardTask<I, KeyValue<K, V>, MapperContext<K, V>> createTask( int shard, int shardCount, InputReader<I> reader, OutputWriter<KeyValue<K, V>> writer) { return new MapShardTask<I, K, V>( mrJobId, shard, shardCount, reader, mrSpec.getMapper(), writer, settings.getMillisPerSlice()); } }, result.getHandle(), settings); setStatusConsoleUrl(settings.getBaseUrl() + "detail?mapreduce_id=" + shardedJobId); return result; }