一、项目
汽车销售数据分析
二、数据概况:
本数据为上牌汽车的销售数据,分为乘用车辆和商用车辆。数据包含销售相关数据与汽车具体参数。数据项包括:时间、销售地点、邮政编码、车辆类型、车辆型号、制造厂商名称、排量、油耗、功率、发动机型号、燃料种类、车外廓长宽高、轴距、前后车轮、轮胎规格、轮胎数、载客数、所有权、购买人相关信息等。
三、具体要求:
1.统计山西省2013年每个月的汽车销售数量的比例,结果例如:
2.统计不同品牌的车在每个月的销售量分布,结果例如:
四、代码实现
1. 统计山西省2013年每个月的汽车销售数量的比例
(1)核心代码
Mapper:
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
public class CarSalesMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
Text k = new Text();
LongWritable v = new LongWritable(1);
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
// 1. 获取一行数据
String line = value.toString();
// 2. 切分数据
String[] values = line.split("\t");
// 过滤掉异常数据
if (values.length < 11) {
return;
}
// 3. 获取月份
String month = values[1];
// 过滤掉异常数据
try {
if(Integer.parseInt(month) < 1 || Integer.parseInt(month) > 12){
return;
}
} catch (Exception e) {
return;
}
// 4. 写出
k.set(month);
context.write(k, v);
}
}
Reducer:
import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;
public class