Yes, DataFlex is still alive and well and being used by lots of people and organisations. 086 * 087 * JobClient jc = new JobClient(conf) 088 * RunningJob job = jc.submitJob(conf) 089 *. 074 * tReducer(conf, XReduce.class, LongWritable.class, Text.class, 075 * Text.class, Text.class, true, reduceConf) 076 * 077 * ChainReducer.addMapper(conf, CMap.class, Text.class, Text.class, 078 * LongWritable.class, Text.class, false, null) 079 * 080 * ChainReducer.addMapper(conf, DMap.class, LongWritable.class, Text.class, 081 * LongWritable.class, LongWritable.class, true, null) 082 * 083 * tInputPaths(conf, inDir) 084 * tOutputPath(conf, outDir) 085 *. 069 * ChainMapper.addMapper(conf, BMap.class, Text.class, Text.class, 070 * LongWritable.class, Text.class, false, mapBConf) 071 * 072 * JobConf reduceConf = new JobConf(false) 073 *. 064 * ChainMapper.addMapper(conf, AMap.class, LongWritable.class, Text.class, 065 * Text.class, Text.class, true, mapAConf) 066 * 067 * JobConf mapBConf = new JobConf(false) 068 *. 058 * tJobName("chain") 059 * tInputFormat(TextInputFormat.class) 060 * tOutputFormat(TextOutputFormat.class) 061 * 062 * JobConf mapAConf = new JobConf(false) 063 *. 050 * 051 * IMPORTANT: There is no need to specify the output key/value classes for the 052 * ChainMapper, this is done by the addMapper for the last mapper in the chain. And 049 * immediate benefit of this pattern is a dramatic reduction in disk IO. 046 * 047 * Using the ChainMapper and the ChainReducer classes is possible to compose 048 * Map/Reduce jobs that look like. It is assumed 044 * all Mappers and the Reduce in the chain use maching output and input key and 045 * value classes as no conversion is done by the chaining code. 041 * 042 * Special care has to be taken when creating chains that the key/values output 043 * by a Mapper are valid for the following Mapper in the chain. This enables having 039 * reusable specialized Mappers that can be combined to perform composite 040 * operations within a single task. 036 * 037 * The key functionality of this feature is that the Mappers in the chain do not 038 * need to be aware that they are executed in a chain. 032 * 033 * The Mapper classes are invoked in a chained (or piped) fashion, the output of 034 * the first becomes the input of the second, and so on until the last Mapper, 035 * the output of the last Mapper will be written to the task's output. 017 */ 018package .lib 019 020import .InterfaceAudience 021import .InterfaceStability 022import .JobConf 023import .Mapper 024import .OutputCollector 025import .Reporter 026 027import java.io.IOException 028 029/** 030 * The ChainMapper class allows to use multiple Mapper classes within a single 031 * Map task.
015 * See the License for the specific language governing permissions and 016 * limitations under the License.
You may obtain a copy of the License at 009 * 010 * 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License") you may not use this file except in compliance 008 * with the License. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. 001/** 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements.