2 uvjhn3 uvjhn3 于 2016.09.22 15:53 提问

mapreduce想用map函数提取几十g文件包含某关键字的行,输出 5C

用默认的textinputformat,但是每次都报错string index out of range 5。
string line = value.tostring();
line.substring(0,1);

请问是什么原因?

5个回答

seeze
seeze   2016.09.22 20:26

光看这两行貌似看不出错在哪里

oyljerry
oyljerry   Ds   Rxr 2016.09.22 21:21

line有可能是空字符串。就会导致后面substring出错

uvjhn3
uvjhn3 为啥会是空字符串,不是每一行数据么。。
大约一年之前 回复
lwjpker
lwjpker   2016.09.27 12:32

从错误来看应该是你后面访问字符串时越界了啊,具体代码贴一下?
最好做下校验吧

wl1411956542
wl1411956542   2016.10.19 21:25

你可以在前面加上判断if(line.length>1)在执行line.substring(0,1);

qq_19917081
qq_19917081   2017.01.06 15:09

string line = value.tostring();这个之后对line做一次校验,
if(line!=null&&line.length>你截取的最大长度)
因为数据不是你想的那么标准,可能有些脏数据,过滤掉就好了

Csdn user default icon
上传中...
上传图片
插入图片