package storm.applications.model.fraud.prepare; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import storm.applications.util.data.Tuple; public class StateTransitionMapper extends Mapper<LongWritable, Text, Tuple, IntWritable> { private String fieldDelimRegex; private String[] items; private int skipFieldCount; private Tuple outKey = new Tuple(); private IntWritable outVal = new IntWritable(1); @Override protected void setup(Mapper.Context context) throws IOException, InterruptedException { Configuration conf = context.getConfiguration(); fieldDelimRegex = conf.get("field.delim.regex", ","); skipFieldCount = conf.getInt("skip.field.count", 0); } @Override protected void map(LongWritable key, Text value, Mapper.Context context) throws IOException, InterruptedException { items = value.toString().split(fieldDelimRegex); if (items.length >= (skipFieldCount + 2)) { for (int i = skipFieldCount + 1; i < items.length; ++i) { outKey.initialize(); outKey.add(items[i-1], items[i]); context.write(outKey, outVal); } } } }