栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

MapReducer Mapper阶段出现异常

MapReducer Mapper阶段出现异常

java.lang.Exception: java.lang.NumberFormatException: empty String
    at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)
Caused by: java.lang.NumberFormatException: empty String
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)
    at date2021_11_27_4.MyMapper.map(MyMapper.java:33)
    at date2021_11_27_4.MyMapper.map(MyMapper.java:1)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

这个异常说的很明确哪一行有错,这个是因为传过来的数据中有null 或者  ""  

我的就是 commodity.setCustomerID(Double.parseDouble(strs[strs.length-2])); 这一行

protected void map(LongWritable key, Text value, Context context)
			throws IOException, InterruptedException {
		// TODO Auto-generated method stub
		
	 	String[] strs =  value.toString().split(",");
	 	text.set(strs[strs.length-1]);
	 	commodity.setCountry(strs[strs.length-1]);
	 	commodity.setCustomerID(Double.parseDouble(strs[strs.length-2]));
		context.write(text, i);
	}

需要在报错的  commodity.setCustomerID(Double.parseDouble(strs[strs.length-2]));  这一行捕捉一个异常

	@Override
	protected void map(LongWritable key, Text value, Context context)
			throws IOException, InterruptedException {
		// TODO Auto-generated method stub
		
	 	String[] strs =  value.toString().split(",");
	 	text.set(strs[strs.length-1]);
	 	commodity.setCountry(strs[strs.length-1]);
	 	//捕捉异常
	 	try {
	 		commodity.setCustomerID(Double.parseDouble(strs[strs.length-2]));
	 	}catch (Exception e) {
			// TODO: handle exception
	 		commodity.setCustomerID(0);
		}
	 	
		context.write(text, i);
	}

这样如果碰到那个数据格式异常就会把数据设置成0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613097.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号