2015-08-11 12 views
-1
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)); 
} 
} 

это мой класс картографа код я хочу получать массив по индексу т получить EROR aarray из связанного индекса Thanx заранееjava.lang.ArrayIndexOutOfBoundsException во время выполнения

+0

Не могли бы вы представить, как выглядят данные в файле, который вы читаете? –

+0

помните, что нумерация начинается с 0, а не 1. Таким образом, четвертым элементом массива 'words' является' words [3] ', а не' words [4] '. – vefthym

+0

101, Ахмед, 30000, M, USA, 1001 102, Сагар, 40000, M, Индия, 1002 103, Санита, 30000, F, Singapur, 1002 104, Кишор, 30000, M, Индия, 1003 105 , nandu, 30000, M, India, 1004 106, Ahmed, 30000, M, India, 1005 107, kranti, 20000, M, India, 1006 108, ravi, 80000, M, India, 1007 109, Nikita , 30000, F, Индия, 1008 110, ayaz, 30000, M, malasiya, 1006 111, pinky, 30000, M, India, 1005 101, rafi, 70000, M, India, 1003 111, mamta, 90000 , F, canada, 1009 – sagar

ответ

1

По вашим данным metioned в вашем комментарий, индекс пола должен быть 3. Обратите внимание, что индекс массива начинается с 0 в java.

И вы всегда должны проверить ваши данные, прежде чем использовать его, например:

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

И вы должны думать о том, как обрабатывать некорректные данные (прикинь, а затем игнорировать его, или попытаться это исправить, и так далее).

+0

Спасибо @abdul – sagar

Смежные вопросы