给定文件信息求文件内容的平均值算法
<1>Map端读取文件信息内容
在读取文件信息内容时,首先对文件信息进行切分,将文件切分为key和value,便于文件信息的计算
public class MyMapper extends Mapper<LongWritable, Text, Text, LongWritable>{
@Override
protected void map(LongWritable key, Text value,Context context)
throws IOException, InterruptedException {
//对文件进行拆分
String[] str = value.toString().split(" ");
//获取文件key值
String name = str[0];
//获取文件value值
long a =Long.parseLong(str[str.length-1]);
//将key和value写进文本中
context.write(new Text(name),new LongWritable(a));
}
}
在设置Map类时继承Mapper类,并使用泛型,通常泛型的第一个类型是LongWritable,之后的泛型可以根据自己需求进行设置
<2>Reduce端进行接收Map端传进来的key,value并进行函数处理
PS:key值相同的value进行运算,不同的key值value不进行运算
public class MyReduce extends Reducer<Text, LongWritable, Text, LongWritable>{
@Override
protect