当前位置: 首页 > 知识库问答 >
问题:

映射中的键类型不匹配:应为组织。阿帕奇。hadoop。io。IntWritable,接收组织。阿帕奇。hadoop。io。可长写

邢硕
2023-03-14

我无法理解为什么会遇到此错误。

映射器

public class movieMapper extends Mapper<LongWritable, Text, IntWritable, Text> {

public void map(LongWritable key, Text value, Context context ) throws IOException,InterruptedException {

    String token[]= value.toString().trim().split("::");

    int movieID=Integer.parseInt(token[0].trim());

    context.write(new IntWritable(movieID), new Text(token[1].trim()));

}

}

减速器

public class joinReducer extends Reducer<IntWritable, Text, Text, Text> {

public void reduce(IntWritable key, Iterable<Text> values, Context context) throws IOException,InterruptedException {
    float avgRating=0.0f;
    int tokenCount = 0;
    float ratingSum=0.0f;
    int count=0;

    String movieName="";

    for(Text val:values) {
        tokenCount+=1;
    }

    //If we have more than 40 views/ratings
    if(tokenCount-1>40) {

        for(Text val:values) {

            String temp = val.toString();


            if(val.equals("1")||val.equals("2")||val.equals("3")||val.equals("4")||val.equals("5")) {

                float tempRating= Float.parseFloat(val.toString().trim());
                ratingSum += tempRating;
                count++;


            }

            else {

                movieName=val.toString().trim();
            }

        }

        avgRating = ratingSum/ (float)count;

        context.write(new Text(Float.toString(avgRating)), new Text(movieName));
    }

}

}

驱动程序配置

Configuration conf= new Configuration();
    String parameter[]= new GenericOptionsParser(conf,args).getRemainingArgs();

    if(parameter.length!=3) {

        System.err.println("Three arguments needed  <File1> <File2> <Out>");
        System.exit(2);
    }


    //set Driver class

    Job job1 = Job.getInstance(conf, "Join");
    job1.setJarByClass(MyDriver.class);
    job1.setReducerClass(joinReducer.class);

    MultipleInputs.addInputPath(job1,  new Path(parameter[0]), TextInputFormat.class, movieMapper.class);
    MultipleInputs.addInputPath(job1,  new Path(parameter[1]), TextInputFormat.class, ratingMapper.class);

    job1.setMapOutputKeyClass(IntWritable.class);
    job1.setMapOutputValueClass(Text.class);


    job1.setOutputKeyClass(Text.class);
    job1.setOutputValueClass(Text.class);


    FileOutputFormat.setOutputPath(job1, new Path(parameter[2] + "/temp"));

    job1.waitForCompletion(true);

2013年6月18日09:47:20信息mapreduce。作业:Job Job\u 1528823320386\u 0018在优步模式下运行:false 2013年6月18日09:47:20信息mapreduce。作业:映射0%减少0%2013年6月18日09:47:24信息映射减少。作业:任务Id:trunt\u 1528823320386\u 0018\u m\u000000 \u 0,状态:FAILED错误:java。io。IOException:映射中的键类型不匹配:应为组织。阿帕奇。hadoop。io。IntWritable,接收组织。阿帕奇。hadoop。io。可在组织中长写。阿帕奇。hadoop。映射。MapTask$MapOutputBuffer。在org上收集(MapTask.java:1069)。阿帕奇。hadoop。映射。MapTask$NewOutputCollector。在org上编写(MapTask.java:712)。阿帕奇。hadoop。mapreduce。任务TaskInputOutputContextImpl。在组织中写入(TaskInputOutputContextImpl.java:89)。阿帕奇。hadoop。mapreduce。lib。地图WrappedMapper$上下文。在org上编写(WrappedMapper.java:112)。阿帕奇。hadoop。mapreduce。映射器。地图(Mapper.java:124)位于org。阿帕奇。hadoop。mapreduce。映射器。在org上运行(Mapper.java:145)。阿帕奇。hadoop。mapreduce。lib。输入删除映射器。在org上运行(DelegatingMapper.java:55)。阿帕奇。hadoop。映射。MapTask。在org上运行NewMapper(MapTask.java:784)。阿帕奇。hadoop。映射。MapTask。在组织上运行(MapTask.java:341)。阿帕奇。hadoop。映射。YarnChild 2美元。在java上运行(YarnChild.java:168)。安全AccessController。javax上的doPrivileged(本机方法)。安全授权。主题doAs(Subject.java:422)位于org。阿帕奇。hadoop。安全用户组信息。doAs(UserGroupInformation.java:1642)位于org。阿帕奇。hadoop。映射。YarnChild。main(YarnChild.java:163)

2013年6月18日09:47:25信息mapreduce。作业:映射50%减少0%2013年6月18日09:47:29信息映射减少。作业:任务Id:trunt\u 1528823320386\u 0018\u m\u000000 \u 1,状态:FAILED错误:java。io。IOException:映射中的键类型不匹配:应为组织。阿帕奇。hadoop。io。IntWritable,接收组织。阿帕奇。hadoop。io。可在组织中长写。阿帕奇。hadoop。映射。MapTask$MapOutputBuffer。在org上收集(MapTask.java:1069)。阿帕奇。hadoop。映射。MapTask$NewOutputCollector。在org上编写(MapTask.java:712)。阿帕奇。hadoop。mapreduce。任务TaskInputOutputContextImpl。在组织中写入(TaskInputOutputContextImpl.java:89)。阿帕奇。hadoop。mapreduce。lib。地图WrappedMapper$上下文。在org上编写(WrappedMapper.java:112)。阿帕奇。hadoop。mapreduce。映射器。地图(Mapper.java:124)位于org。阿帕奇。hadoop。mapreduce。映射器。在org上运行(Mapper.java:145)。阿帕奇。hadoop。mapreduce。lib。输入删除映射器。在org上运行(DelegatingMapper.java:55)。阿帕奇。hadoop。映射。MapTask。在org上运行NewMapper(MapTask.java:784)。阿帕奇。hadoop。映射。MapTask。在组织上运行(MapTask.java:341)。阿帕奇。hadoop。映射。YarnChild 2美元。在java上运行(YarnChild.java:168)。安全AccessController。javax上的doPrivileged(本机方法)。安全授权。主题doAs(Subject.java:422)位于org。阿帕奇。hadoop。安全用户组信息。doAs(UserGroupInformation.java:1642)位于org。阿帕奇。hadoop。映射。YarnChild。main(YarnChild.java:163)

共有1个答案

孙岳
2023-03-14

此作业中运行两个映射器,moviMapper和ratingMapper。ratingMapper在函数声明中有一个关键字拼写错误,并且map函数的名称“map”被错误地写成“减少”。

根据out-config,reducer应该接受IntWritable类型的键,但正在变得LongWritable,因此出现了错误。(TextInputFormat生成LongWritable类型的键和Text类型的值)

 类似资料:
  • 我想写一份工作,可以分析youtube数据集中的一些信息。我相信我已经在driver类中正确设置了map的输出键,但是我仍然得到了上面的错误,我在这里发布了代码和异常, 地图绘制者 减速器等级 驱动程序类 我得到的例外 Java语言io。IOException:映射中的键类型不匹配:应为组织。阿帕奇。hadoop。io。文本,接收组织。阿帕奇。hadoop。io。可在组织中长写。阿帕奇。hadoo

  • 我有两个Spring Boot服务A和B。还有一个外部服务C。这是请求路径: 网络浏览器 外部服务正在返回一个返回前端的资源。为了在A、B和C之间进行通信,我使用了Rest模板。进入Web应用程序时一切都很好,但是一旦我运行并行运行的BDD测试(9个线程),我就会在调用外部服务C时在服务B中获得NoHttp响应异常。 这是我的Rest模板配置: 我已经尝试调用但没有帮助。 让我补充一点,从服务B到

  • Selenium Webdriver(2.53)和java(jdk 7)。Mozilla Firefox ESR(45.2.0)在页面打开时立即崩溃,并显示错误消息: 出错

  • Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?

  • 编辑:问题解决(见注释解释) 我安装了HBase。当我尝试启动“start hbase.sh”时,会出现一些错误: 错误:无法找到或加载主类org.apache.hadoop.hbase.util.HBaseConfTool 错误:无法找到或加载主类组织。阿帕奇。hadoop。hbase。动物园管理员。ZKServerTool 我的安装目录是: 我将HBASE_HOME配置为:C:\用户\Alon

  • 我正在尝试从servlet(viewcurrentstock.java)检索一个属性到jsp(viewstock.jsp)。这里有一个例外提示:“org.apache.jasper.JasperException:java.lang.NullPointerException” 查看当前股票。JAVA viewstock.jsp 服务器日志: