カスタムキーを使用したmapreduceジョブのcompareTo中にインスタンス変数の値を変更する方法はありますか?(2つのメソッド= 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を返します。これは、インスタンス変数(chiaviComplete)を初期化して(write(DataOutput out)メソッドを使用して)書き込んだときの値です。