SQLGroupByに似たようなコードを作成しました。
私が取ったデータセットはここにあります:
250788681419,20090906,200937,200909,619、SUNDAY、WEEKEND、ON-NET、MORNING、OUTGOING、VOICE、25078、PAY_AS_YOU_GO_PER_SECOND_PSB、SUCCESSFUL-RELEASEDBYSERVICE、17,0,1,21.25,635-10-112-30455
public class MyMap extends Mapper<LongWritable, Text, Text, DoubleWritable> {
public void map(LongWritable key, Text value, Context context) throws IOException
{
String line = value.toString();
String[] attribute=line.split(",");
double rs=Double.parseDouble(attribute[17]);
String comb=new String();
comb=attribute[5].concat(attribute[8].concat(attribute[10]));
context.write(new Text(comb),new DoubleWritable (rs));
}
}
public class MyReduce extends Reducer<Text, DoubleWritable, Text, DoubleWritable> {
protected void reduce(Text key, Iterator<DoubleWritable> values, Context context)
throws IOException, InterruptedException {
double sum = 0;
Iterator<DoubleWritable> iter=values.iterator();
while (iter.hasNext())
{
double val=iter.next().get();
sum = sum+ val;
}
context.write(key, new DoubleWritable(sum));
};
}
マッパーでは、その値として17番目の引数をレデューサーに送信して合計します。ここで、14番目の引数も合計したいのですが、それをレデューサーに送信するにはどうすればよいですか?