Skip to content

Commit

Permalink
Simplify and consolidate examples in Developing an MR App chapter.
Browse files Browse the repository at this point in the history
  • Loading branch information
tomwhite committed Sep 14, 2014
1 parent 9ceda66 commit 46c93fe
Show file tree
Hide file tree
Showing 21 changed files with 113 additions and 364 deletions.
1 change: 0 additions & 1 deletion ch05/src/main/java/v2/MaxTemperatureDriver.java
Expand Up @@ -10,7 +10,6 @@
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

import v1.MaxTemperatureReducer;

// vv MaxTemperatureDriverV2
Expand Down
31 changes: 14 additions & 17 deletions ch05/src/main/java/v2/MaxTemperatureMapper.java
@@ -1,32 +1,29 @@
package v2;
//== MaxTemperatureMapperV2
// cc MaxTemperatureMapperV2 A Mapper that uses a utility class to parse records

import java.io.IOException;

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 v2.NcdcRecordParser;

// vv MaxTemperatureMapperV2
public class MaxTemperatureMapper
extends Mapper<LongWritable, Text, Text, IntWritable> {

//vv MaxTemperatureMapperV2
extends Mapper<LongWritable, Text, Text, IntWritable> {

/*[*/private NcdcRecordParser parser = new NcdcRecordParser();/*]*/

@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {

String line = value.toString();
String year = line.substring(15, 19);
/*[*/String temp = line.substring(87, 92);
if (!missing(temp)) {/*]*/
int airTemperature = Integer.parseInt(temp);
context.write(new Text(year), new IntWritable(airTemperature));
/*[*/}/*]*/

/*[*/parser.parse(value);/*]*/
if (/*[*/parser.isValidTemperature()/*]*/) {
context.write(new Text(/*[*/parser.getYear()/*]*/),
new IntWritable(/*[*/parser.getAirTemperature()/*]*/));
}
}

/*[*/private boolean missing(String temp) {
return temp.equals("+9999");
}/*]*/
//^^ MaxTemperatureMapperV2
}
// ^^ MaxTemperatureMapperV2
@@ -1,8 +1,8 @@
// cc NcdcRecordParserV3 A class for parsing weather records in NCDC format
package v3;
// cc NcdcRecordParserV2 A class for parsing weather records in NCDC format
package v2;
import org.apache.hadoop.io.Text;

// vv NcdcRecordParserV3
// vv NcdcRecordParserV2
public class NcdcRecordParser {

private static final int MISSING_TEMPERATURE = 9999;
Expand Down Expand Up @@ -40,4 +40,4 @@ public int getAirTemperature() {
return airTemperature;
}
}
// ^^ NcdcRecordParserV3
// ^^ NcdcRecordParserV2
2 changes: 1 addition & 1 deletion ch05/src/main/java/v3/MaxTemperatureDriver.java
Expand Up @@ -12,7 +12,7 @@

import v1.MaxTemperatureReducer;

// Identical to v2 except for v3 mapper
//Identical to v2 except for v3 mapper
public class MaxTemperatureDriver extends Configured implements Tool {

@Override
Expand Down
30 changes: 21 additions & 9 deletions ch05/src/main/java/v3/MaxTemperatureMapper.java
@@ -1,5 +1,5 @@
// == MaxTemperatureMapperV3
package v3;
// cc MaxTemperatureMapperV3 A Mapper that uses a utility class to parse records

import java.io.IOException;

Expand All @@ -8,21 +8,33 @@
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

// vv MaxTemperatureMapperV3
import v2.NcdcRecordParser;

//vv MaxTemperatureMapperV3
public class MaxTemperatureMapper
extends Mapper<LongWritable, Text, Text, IntWritable> {

/*[*/enum Temperature {
OVER_100
}/*]*/

/*[*/private NcdcRecordParser parser = new NcdcRecordParser();/*]*/
private NcdcRecordParser parser = new NcdcRecordParser();

@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {

/*[*/parser.parse(value);/*]*/
if (/*[*/parser.isValidTemperature()/*]*/) {
context.write(new Text(/*[*/parser.getYear()/*]*/),
new IntWritable(/*[*/parser.getAirTemperature()/*]*/));
parser.parse(value);
if (parser.isValidTemperature()) {
int airTemperature = parser.getAirTemperature();
/*[*/if (airTemperature > 1000) {
System.err.println("Temperature over 100 degrees for input: " + value);
context.setStatus("Detected possibly corrupt record: see logs.");
context.getCounter(Temperature.OVER_100).increment(1);
}/*]*/
context.write(new Text(parser.getYear()), new IntWritable(airTemperature));
}
}
}
// ^^ MaxTemperatureMapperV3
//^^ MaxTemperatureMapperV3

28 changes: 11 additions & 17 deletions ch05/src/main/java/v4/MaxTemperatureMapper.java
@@ -1,40 +1,34 @@
// == MaxTemperatureMapperV4
package v4;

// cc MaxTemperatureMapperV4 Mapper for maximum temperature example
import java.io.IOException;

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 v3.NcdcRecordParser;

//vv MaxTemperatureMapperV4
// vv MaxTemperatureMapperV4
public class MaxTemperatureMapper
extends Mapper<LongWritable, Text, Text, IntWritable> {

/*[*/enum Temperature {
OVER_100
}/*]*/

private NcdcRecordParser parser = new NcdcRecordParser();
enum Temperature {
MALFORMED
}

private NcdcRecordParser parser = new NcdcRecordParser();

@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {

parser.parse(value);
if (parser.isValidTemperature()) {
int airTemperature = parser.getAirTemperature();
/*[*/if (airTemperature > 1000) {
System.err.println("Temperature over 100 degrees for input: " + value);
context.setStatus("Detected possibly corrupt record: see logs.");
context.getCounter(Temperature.OVER_100).increment(1);
}/*]*/
context.write(new Text(parser.getYear()), new IntWritable(airTemperature));
} else if (parser.isMalformedTemperature()) {
System.err.println("Ignoring possibly corrupt input: " + value);
context.getCounter(Temperature.MALFORMED).increment(1);
}
}
}
//^^ MaxTemperatureMapperV4

// ^^ MaxTemperatureMapperV4
@@ -1,4 +1,4 @@
package v5;
package v4;
import org.apache.hadoop.io.Text;

public class NcdcRecordParser {
Expand Down
47 changes: 0 additions & 47 deletions ch05/src/main/java/v5/MaxTemperatureDriver.java

This file was deleted.

34 changes: 0 additions & 34 deletions ch05/src/main/java/v5/MaxTemperatureMapper.java

This file was deleted.

67 changes: 0 additions & 67 deletions ch05/src/main/java/v6/MaxTemperatureDriver.java

This file was deleted.

47 changes: 0 additions & 47 deletions ch05/src/main/java/v7/MaxTemperatureDriver.java

This file was deleted.

0 comments on commit 46c93fe

Please sign in to comment.