我同意托馬斯Jungblut;編寫自己的Writable
可能是最好的(也是最簡單的)解決方案。
我最近寫了一個定製的Writable
,叫做IntPairWritable
,它只保存兩個整數。這是我的代碼。
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.giraph.utils.IntPair;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.Writable;
public class IntPairWritable extends IntPair implements Writable, Configurable {
private Configuration conf;
public IntPairWritable() {
super(0, 0);
}
public IntPairWritable(int fst, int snd) {
super(fst, snd);
}
@Override
public void readFields(DataInput input) throws IOException {
super.setFirst(input.readInt());
super.setSecond(input.readInt());
}
@Override
public void write(DataOutput output) throws IOException {
output.writeInt(super.getFirst());
output.writeInt(super.getSecond());
}
@Override
public Configuration getConf() {
return this.conf;
}
@Override
public void setConf(Configuration conf) {
this.conf = conf;
}
@Override
public String toString() {
return super.getFirst() + "," + super.getSecond();
}
}
你Writable
類可能看起來只是相似。也許就像
public class RetraceableWritable<I extends Writable, D extends Writable> implements Writable, Configurable {
private I senderId;
private D data;
...
...等等。
- 注1:默認構造函數必須始終存在,以確保Hadoop的可創建類的實例。
- 注2:當所有東西都是
configurable
時,Giraph似乎喜歡它,所以實現這個接口是個好主意。
問候
一個代碼示例可能會吸引更多的關注。 –
謝謝安德烈斯,做到了。 – user2533067
您當然可以根據自己的需要編寫自己的「Writable」實現。如果你根本不涉及Hadoop,請不要使用Hadoop標籤。 –