I don't quite know how to write the read and write functions, but I want to write my own writable, which should have a DoubleWritable/double value followed by a list of Strings/Text. This Writable will be used as a value. Is the code below the best way to go about writing such a writable?
import java.io.DataInput; import java.io.DataOutput; import java.io.EOFException; import java.io.IOException; import java.util.ArrayList; import org.apache.hadoop.io.Writable; public class MyWritable implements Writable { private double score; private ArrayList<String> nameList; public void setScore(double score) { this.score= score; } public void setNameList(ArrayList<String> nameList) { this.nameList= nameList; } public double getScore() { return score; } public ArrayList<String> getNameList() { return nameList; } public void readFields(DataInput in) throws IOException { score= in.readDouble(); try { do { nameList.add(in.readUTF()); } while (true); } catch (EOFException eofe) { // continue; done } } public void write(DataOutput out) throws IOException { out.writeDouble(score); for (String name: nameList) { out.writeUTF(name); } } }