执行时java.lang.ArrayIndexOutOfBoundsException

时间:2015-08-11 08:05:39

标签: hadoop

package com.HadoopExpert;


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;


  public class SumMapper extends Mapper<LongWritable, Text,Text,IntWritable>{


  public void map(LongWritable key, Text value, Context con) throws IOException, InterruptedException{

    String s = value.toString();
    String[] words = s.split(",");

    String gender  = words[4];
    int sal = Integer.parseInt(words[2]);

    con.write(new Text(gender), new IntWritable(sal));
}
}

这是我的mapper类代码我想通过索引获取数组m得到一个错误aarray out of bound index 提前谢谢

1 个答案:

答案 0 :(得分:1)

根据您在评论中提到的数据,性别指数应为3。请注意,数组的索引从java中的0开始。

您应该在使用之前检查数据,例如:

if (words.length > 3) {
    String gender = words[3];
    ......
}

你应该考虑如何处理坏数据(计算然后忽略它,或尝试修复它,等等)。