首页 > 其他 > 详细

关于Mapreduce Text类型赋值的错误

时间:2021-04-28 21:44:56      阅读:26      评论:0      收藏:0      [点我收藏+]

Mapreduce中Text类型数据被无缘无故替换?

? 今天偶然看到一个mapreduce demo,直接上手操作

统计两个文件中 最大值

技术分享图片

文件中数据格式为 名字 数值

输出为 名字(最大值所对应的名字) 最大值 例如:豪玉 2201

一通编码,但是居然出现如下的结果

技术分享图片

赶紧去查看了代码,如下

map阶段就是找出两个文件中各自的最大值

//map阶段

protected void map(LongWritable key,Text value,Context context) throws IOException,
            InterruptedException {
        // 抛弃无效记录
        String [] line = value.toString().split(" ");
        // 把line转换为数值
        long temp = Long.parseLong(line[1]);
        // 比较大小
        if (temp >= max) {
            name1 = line[0];
            // 把val赋值给tempMax
            max = temp;
        }
    }
protected void cleanup(Context context) throws IOException, InterruptedException {
        maxValue.set(max);
        name.set(name1);
        context.write(name,maxValue);
    }

reduce阶段再进行一次比较

//reduce阶段如下

private Long max = Long.MIN_VALUE;
private Text mname = new Text();
private String name;
private Text name2 = new Text();
protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException
    {
        for(LongWritable value : values){
            System.out.println(key+value.toString());
            if (value.get()>=max)
            {
                System.out.println("此时的最大值"+value.get());
                name2 = key;
                max = value.get();
            }
        }
    }

protected void cleanup(Context context) throws IOException, InterruptedException {
        // 设置最大值
        LongWritable maxValue = new LongWritable();
        maxValue.set(max);
        mname.set(name2);
        context.write(mname,maxValue);
    }

于是开始无脑输出测试

先测试了进入reduce端的数据,无误

技术分享图片

测试进入reduce端 if判断中的数据,无误

技术分享图片

???

一通改,无果

偶然将 reduce 赋值语句用String类型赋值,发现结果无误

name = key.toString();
技术分享图片

进而开始找寻原因,原来是Text类型赋值的时候需要实例化

name2 = new Text(key);

赋值修改如上,经测试无误

关于Mapreduce Text类型赋值的错误

原文:https://www.cnblogs.com/xp-thebest/p/14715576.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!