0

有没有办法在使用自定义键的 mapreduce 作业的 compareTo 期间更改实例变量的值?(我有一些问题,因为它使用两种方法读取和写入数据 = readFields(DataInput in) 和 write(DataOutput out) ,并且它仅在第一次将对象写入框架,我无法修改它的其余部分过程)

我有此代码用于我的自定义键的 compareTo

    @Override
    public int compareTo(MultipleText m1) {
        for(Writable one : m1.getChiavi().keySet())
        {
            if(this.chiavi.keySet().contains(one))
            {
                if(this.chiavi.get(one).equals(m1.getChiavi().get(one)))
                    if(!strutturaTab.equals(m1.getStrutturaTab()))
                    {
//                      if(this.chiavi.size()>m1.getChiavi().size())
//                          m1.setChiaviComplete(this.chiavi);
//                      else if(this.chiavi.size()<m1.getChiavi().size())
//                          this.setChiaviComplete(m1.getChiavi());
                        return 0;
                    }
                return 1;
            }
            return 2;
        }
        return -1;
    }

注释行是不起作用的行

当它进入减少阶段时,方法 getChiaviComplete() 返回 null ,这是我初始化并写入(使用 write(DataOutput out) 方法)实例变量(chiaviComplete)时的值

4

1 回答 1

0

在比较过程中您不能更改 Key,因为正在比较的记录只是记录的副本。更改对象不会更改记录。

于 2013-08-26T07:27:36.273 回答