我有一个销售文件,其中包含商店名称、位置、销售价格、产品名称等信息。文件格式如下所示,
2012-01-01 09:00 San Jose Men's Clothing 214.05 Amex
2012-01-01 09:00 Fort Worth Women's Clothing 153.57 Visa
2012-01-01 09:00 San Diego Music 66.08 Cash
2012-01-01 09:00 Pittsburgh Pet Supplies 493.51 Discover
2012-01-01 09:00 Omaha Children's Clothing 235.63 MasterCard
2012-01-01 09:00 Stockton Men's Clothing 247.18 MasterCard
我想编写一个 Map-reduce 作业来查找我们所有商店中按产品类别划分的销售明细。下面提供了我的代码(包括 Mapper 和 reducer),
public final class P1Q1 {
public static final class P1Q1Map extends Mapper<LongWritable, Text, Text, DoubleWritable> {
private final Text word = new Text();
public final void map(final LongWritable key, final Text value, final Context context)
throws IOException, InterruptedException {
final String line = value.toString();
final String[] data = line.trim().split("\t");
if (data.length == 6) {
final String product = data[3];
final double sales = Double.parseDouble(data[4]);
word.set(product);
context.write(word, new DoubleWritable(sales));
}
}
}
public static final class P1Q1Reduce extends Reducer<Text, DoubleWritable, Text, DoubleWritable> {
public final void reduce(final Text key, final Iterable<DoubleWritable> values, final Context context)
throws IOException, InterruptedException {
double sum = 0.0;
for (final DoubleWritable val : values) {
sum += val.get();
}
context.write(key, new DoubleWritable(sum));
}
}
}
代码提供的答案不正确,与 Udacity 结果不匹配。
任何人都知道这是否是正确的想法以及如何做到这一点?
凤凰求蛊
相关分类