大数据技术原理与应用课程设计遇到的问题2

问题一:表头

WARN mapred.LocalJobRunner: job_local 1060669736_0001

java.lang.Exception: java.lang.ArrayIndexOutOfBoundsException: 1

2024-01-03 21:39:40,671 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.

这个警告信息表示在执行Hadoop作业时,没有正确解析命令行选项。为了解决这个问题,需要实现Tool接口并使用ToolRunner来执行应用程序。

2024-01-03 21:39:41,462 WARN mapred.LocalJobRunner: job_local 1060669736_0001

java.lang.Exception: java.lang.ArrayIndexOutOfBoundsException: 1

这个异常表示在执行Hadoop作业时,数组索引越界。

数据集中包含表头:

解决办法:将表的第一列删除,重新上传数据,执行成功。

问题二:数据集问题

WARN mapred.LocalJobRunner: job_local1053007145_0001
java.lang.Exception: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:552)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at MapReduce.Map_vegetable.map(Map_vegetable.java:24)
    at MapReduce.Map_vegetable.map(Map_vegetable.java:9)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:799)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:347)
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:271)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

数据集中有空格或与Mapper函数处理识别数组分隔符时导致的溢出错误,例如下图数据第三行多了一个“,”导致数据处理到第三行时出现报错。原因是在执行MapReduce作业时,数组索引越界。

通过打印i我们可以发现数据集具体问题所在位置:

执行第三行时报错:

仔细检查数据集第三行数据多了一个“,”导致数组索引越界:

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值