IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 踩坑:Unable to initialize MapOutputCollector org.apache.hadoop.mapred.MapTask$MapOutputBuffer -> 正文阅读

[大数据]踩坑:Unable to initialize MapOutputCollector org.apache.hadoop.mapred.MapTask$MapOutputBuffer

今天在做MapReduce的时候,为了做个降序排列,所以定义了一个自定义序列,然后运行的时候就出现了这个问题,查了好多教程,最后发现错在了一个比较离谱的地方,记录一下,顺带写上其他几种可能。(1-3来源网络,4亲身经历)
先放个报错信息以供参考

2022-04-29 01:04:34,361 WARN  [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:createSortingCollector(418)) - Unable to initialize MapOutputCollector org.apache.hadoop.mapred.MapTask$MapOutputBuffer
java.lang.RuntimeException: java.lang.NoSuchMethodException: model.classes.<init>()
        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:137)
        at org.apache.hadoop.io.WritableComparator.newKey(WritableComparator.java:144)
        at org.apache.hadoop.io.WritableComparator.<init>(WritableComparator.java:130)
        at org.apache.hadoop.io.WritableComparator.get(WritableComparator.java:65)
        at org.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:903)
        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:1019)
        at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:409)
        at org.apache.hadoop.mapred.MapTask.access$100(MapTask.java:83)
        at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:711)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:783)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:348)
        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)
Caused by: java.lang.NoSuchMethodException: model.classes.<init>()
        at java.lang.Class.getConstructor0(Class.java:3082)
        at java.lang.Class.getDeclaredConstructor(Class.java:2178)
        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
        ... 16 more
2022-04-29 01:04:34,364 INFO  [Thread-21] mapred.LocalJobRunner (LocalJobRunner.java:runTasks(486)) - map task executor complete.
2022-04-29 01:04:34,370 WARN  [Thread-21] mapred.LocalJobRunner (LocalJobRunner.java:run(590)) - job_local1220408697_0001
java.lang.Exception: java.io.IOException: Initialization of all the collectors failed. Error in last collector was:java.lang.RuntimeException: java.lang.NoSuchMethodException: model.classes.<init>()
        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.io.IOException: Initialization of all the collectors failed. Error in last collector was:java.lang.RuntimeException: java.lang.NoSuchMethodException: model.classes.<init>()
        at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:424)
        at org.apache.hadoop.mapred.MapTask.access$100(MapTask.java:83)
        at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:711)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:783)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:348)
        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)
Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: model.classes.<init>()
        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:137)
        at org.apache.hadoop.io.WritableComparator.newKey(WritableComparator.java:144)
        at org.apache.hadoop.io.WritableComparator.<init>(WritableComparator.java:130)
        at org.apache.hadoop.io.WritableComparator.get(WritableComparator.java:65)
        at org.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:903)
        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:1019)
        at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:409)
        ... 10 more
Caused by: java.lang.NoSuchMethodException: model.classes.<init>()
        at java.lang.Class.getConstructor0(Class.java:3082)
        at java.lang.Class.getDeclaredConstructor(Class.java:2178)
        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
        ... 16 more

情况1

包导入错了,这是网上最多情况的报错原因,比如Text应该要导入org.apache.hadoop.io.Text之类的,仔细检查一下,看看有没有。

情况2

自定义序列的时候没有没有完全继承WritableComparable, 这种情况的话,只要继承一下WritableComparable就ok了, WritableComparable已经继承了WritableComparable。比如我的自定义序列:

public class classes implements WritableComparable<classes>{...}

情况3

如果是自定义序列的话,再MapReduce操作中是要求其可迭代的,也就是说需要重写一个compareTo方法,比如我的

public int compareTo(classes o) {
        //降序
       return (int) (-this.avgsorce+o.getAvgsorce());
    }

如果没写的话也可能出现报错

情况4

最后就是我的问题了,很简单,在自定义序列的时候,我只定义了一个有参的构造器,总所周知,在Java里如果已经定义了构造器,系统就不再有默认构造器了,这就导致我定义的这个自定义序列没有无参构造器,好巧不巧,MapReduce排序的时候就偏偏要用到这个无参构造器,得嘞,这可不就报错了,到此我定义了一个无参构造器,问题解决

public classes(){

    }

这坑有点深,找了我好久,再加上现在是北京时间1:21,半夜啦!!忍不住发一下吐槽一下(这句纯吐槽,不想看可以略过哈哈哈)

转载请注明出处,谢谢!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:49:32  更:2022-05-01 15:53:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:47:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码