jj81427tw 寫:
java.lang.ArrayIndexOutOfBoundsException: 1
at MaxminTest$MyMapper.map(MaxminTest.java:34)
at MaxminTest$MyMapper.map(MaxminTest.java:19)
錯誤:在 34 行。
請先確定 split 是否正常運作。感覺上 flows[] 只有一個內容(只有 flows[0]),所以 flows[1] 取不到值。
原因:
看過 text.txt 內容,每行只有一個數值,沒有跳格符號('\t',也就是 TAB),
既然輸入沒有跳格符號那 split("\t") 就沒有作用。
代碼:
31 protected void map(LongWritable k1, Text v1, Context context) throws IOException ,InterruptedException {
32 //按照制表符進行分割
33 final String[] flows = v1.toString().split("\t");
34 //將文本轉數值
35 final long val = Long.parseLong(flows[1]);
36 //保存在0索引
37 tops[0] = val;
38 //排序後最大值在最後一個索引,這樣由後到前,依次?小
39 Arrays.sort(tops);
40 }
- Jazz