Hadoop 失败错误:java.io.IOException:初始化所有收集器失败

Hadoop 失败错误:java.io.IOException:初始化所有收集器失败,hadoop,mapreduce,yarn,Hadoop,Mapreduce,Yarn,我在运行MapReduce WordCount作业时出错 错误:java.io.IOException:初始化所有收集器 失败。上一个收集器中的错误为:位于的类wordcount.wordmapper org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:414) 位于org.apache.hadoop.mapred.MapTask.access$100(MapTask.java:81) org.apache.h

我在运行MapReduce WordCount作业时出错

错误:java.io.IOException:初始化所有收集器 失败。上一个收集器中的错误为:位于的类wordcount.wordmapper org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:414) 位于org.apache.hadoop.mapred.MapTask.access$100(MapTask.java:81) org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)位于 java.security.AccessController.doPrivileged(本机方法)位于 javax.security.auth.Subject.doAs(Subject.java:415) atorg.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)位于 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)由以下原因引起: java.lang.ClassCastException:class wordcount.wordmapperat java.lang.Class.asSubclass(Class.java:3165)位于 org.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:892) 在 org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:1005) 在 org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:402)


运行mapredue作业时也会发生同样的情况。请导入正确的文本类

如果已导入以下导入,则会出现该错误:

import com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider.Text;
换成这个

import org.apache.hadoop.io.Text;

您的类必须具有默认构造函数,如果您定义了任何参数化构造函数,则默认构造函数将自动被删除。您应该显式定义此构造函数。你能展示你的代码片段吗

Class SampleClass
{
  int a;
  public SampleClass(int param)
  {
    a = param;
  }

  public SampleClass()
  {
  }
}

我发现我必须实现
writeablecomparable
接口才能工作

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.WritableComparable;
public class Pair implements WritableComparable<Pair> {

    public Text key1;

    public Text key2;

    public Pair() {
        key1 = new Text();
        key2 = new Text();
    }

    public Pair(String key1, String key2) {
        this.key1 = new Text(key1);
        this.key2 = new Text(key2);
    }

    public void setKey1(Text key1) {
        this.key1 = key1;
    }

    public void setKey2(Text key2) {
        this.key2 = key2;
    }

    public Text getKey1() {
        return key1;
    }

    public Text getKey2() {
        return key2;
    }

    @Override
    public boolean equals(Object b) {
        Pair p = (Pair) b;
        return p.key1.toString().equals(this.key1.toString())
                && p.key2.toString().equals(this.key2.toString());
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result
                + ((key1 == null) ? 0 : key1.toString().hashCode());
        result = prime * result
                + ((key2 == null) ? 0 : key2.toString().hashCode());
        return result;
    }

    @Override
    public String toString() {
        return "(" + key1 + ", " + key2 + ")";
    }

    @Override
    public void readFields(DataInput arg0) throws IOException {
        key1.readFields(arg0);
        key2.readFields(arg0);
    }

    @Override
    public void write(DataOutput arg0) throws IOException {
        key1.write(arg0);
        key2.write(arg0);
    }

    public int compareTo(Pair p1) {
        int k = this.key1.toString().compareTo(p1.key1.toString());

        if (k != 0) {
            return k;
        } else {
            return this.key2.toString().compareTo(p1.key2.toString());
        }
    }

}
导入java.io.DataInput;
导入java.io.DataOutput;
导入java.io.IOException;
导入org.apache.hadoop.io.Text;
导入org.apache.hadoop.io.WritableComparable;
公共类对实现了WritableComparable{
公共文本键1;
公共文本键2;
公共对(){
key1=新文本();
key2=新文本();
}
公共对(字符串键1、字符串键2){
this.key1=新文本(key1);
this.key2=新文本(key2);
}
公共无效设置键1(文本键1){
此参数为0.key1=key1;
}
公共无效设置键2(文本键2){
这个.key2=key2;
}
公共文本getKey1(){
返回键1;
}
公共文本getKey2(){
返回键2;
}
@凌驾
公共布尔等于(对象b){
对p=(对)b;
返回p.key1.toString().equals(this.key1.toString())
&&p.key2.toString().equals(this.key2.toString());
}
@凌驾
公共int hashCode(){
最终整数素数=31;
int结果=1;
结果=素数*结果
+((key1==null)?0:key1.toString().hashCode());
结果=素数*结果
+((key2==null)?0:key2.toString().hashCode());
返回结果;
}
@凌驾
公共字符串toString(){
返回“(“+key1+”,“+key2+”)”;
}
@凌驾
公共void读取字段(DataInput arg0)引发IOException{
键1.读取字段(arg0);
键2.读取字段(arg0);
}
@凌驾
公共无效写入(数据输出arg0)引发IOException{
键1.写入(arg0);
键2.写入(arg0);
}
公共整数比较(对p1){
int k=this.key1.toString().compareTo(p1.key1.toString());
如果(k!=0){
返回k;
}否则{
返回这个.key2.toString().compareTo(p1.key2.toString());
}
}
}

共享您的字数代码