package skywriting.examples.kmeans;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import com.asgow.ciel.executor.Ciel;
import com.asgow.ciel.references.Reference;
import com.asgow.ciel.references.WritableReference;
import com.asgow.ciel.tasks.FirstClassJavaTask;
public class KMeansHead implements FirstClassJavaTask {
private final Reference dataPartitionRef;
private final int k;
private final int numDimensions;
public KMeansHead(Reference dataPartitionRef, int k, int numDimensions) {
this.dataPartitionRef = dataPartitionRef;
this.k = k;
this.numDimensions = numDimensions;
}
@Override
public Reference[] getDependencies() {
return new Reference[] { this.dataPartitionRef };
}
@Override
public void invoke() throws Exception {
DataInputStream dis = new DataInputStream(new FileInputStream(Ciel.RPC.getFilenameForReference(this.dataPartitionRef)));
WritableReference out = Ciel.RPC.getOutputFilename(0);
DataOutputStream dos = new DataOutputStream(out.open());
for (int i = 0; i < this.k * this.numDimensions; ++i) {
dos.writeDouble(dis.readDouble());
}
dis.close();
dos.close();
//Ciel.RPC.closeOutput(0);
}
@Override
public void setup() {
// TODO Auto-generated method stub
}
}