java.util.NoSuchElementException错误原因及解决方案
1.原因:没有控制语句导致的迭代器的越界,使得map中的数据无法传入reduce,从而无法把结果传入目标文件中。
在进行Mapreduce实例——WordCount实验时遇到的错误,开始以为是lib包导入和读取源文件格式的问题,后来无论怎么修改都会报这个错误,报错如下:
java.lang.Exception: java.util.NoSuchElementException
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:491)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:551)
Caused by: java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at mapreduce.WordCount$doMapper.map(WordCount.java:43)
at mapreduce.WordCount$doMapper.map(WordCount.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:270)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
18/11/16 00:25:39 INFO mapreduce.Job: Job job_local1205845239_0001 failed with state FAILED due to: NA
18/11/16 00:25:39 INFO mapreduce.Job: Counters: 0
错误根源:
2.解决方案:
解决方案1
if(tokenizer.hasMoreTokens())
{
this.word.set(tokenizer.nextToken());
context.write(this.word, one);
}
解决方案2
if(!value.toString().equals(""))
{
word.set(tokenizer.nextToken());
context.write(word, one);
}
最新文章
- phpstrom正则替换
- MOB 短信验证
- WinForm界面布局控件WeifenLuo.WinFormsUI.Docking";的使用 (二)
- 学习Hadoop不错的系列文章
- Hbase常用操作
- session之退出登陆
- ubuntu系统内核替换
- Java学习笔记——Linux下安装配置MySQL
- VFP 实验参考答案
- WebSocket 结合 Nginx 实现域名及 WSS 协议访问
- AtCoder Grand Contest 017
- BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP
- C# 通俗说 哈希表
- 【STM32H7教程】第2章 STM32H7的开发环境搭建
- 微信小程序支付开发之申请退款
- Spring Boot功能实战
- erc721-165学习
- SOLR缓存调优
- Spark记录-官网学习配置篇(一)
- Navicat MySql乱码解决