package uk.ac.imperial.lsds.seep.api;
import java.util.List;
import java.util.Properties;
import uk.ac.imperial.lsds.seep.api.data.ITuple;
import uk.ac.imperial.lsds.seep.api.data.Schema;
import uk.ac.imperial.lsds.seep.api.data.Schema.SchemaBuilder;
import uk.ac.imperial.lsds.seep.api.data.Type;
import uk.ac.imperial.lsds.seep.api.operator.LogicalOperator;
import uk.ac.imperial.lsds.seep.api.operator.SeepLogicalQuery;
import uk.ac.imperial.lsds.seep.api.operator.sinks.MarkerSink;
import uk.ac.imperial.lsds.seep.api.operator.sources.FileConfig;
import uk.ac.imperial.lsds.seep.api.operator.sources.FileSource;
public class FileBase implements QueryComposer {
@Override
public SeepLogicalQuery compose() {
Schema s = SchemaBuilder.getInstance().newField(Type.LONG, "w1").newField(Type.LONG, "w2").build();
// Create FileConfig to configure the file source
Properties p = new Properties();
p.setProperty(FileConfig.FILE_PATH, "/data/test.txt");
p.setProperty(FileConfig.SERDE_TYPE, "0");
FileSource source = FileSource.newSource(10, p);
LogicalOperator trainer = queryAPI.newStatelessOperator(new Trainer(), 0);
LogicalOperator parameterServer = queryAPI.newStatelessOperator(new ParameterServer(), 1);
// Used to indicate a sink point
MarkerSink sink = MarkerSink.newSink(2);
source.connectTo(trainer, s, 0);
trainer.connectTo(parameterServer, 0, new DataStore(s, DataStoreType.NETWORK), ConnectionType.UPSTREAM_SYNC_BARRIER);
parameterServer.connectTo(trainer, 1, new DataStore(s, DataStoreType.NETWORK));
// reusing properties to confgure the sink
p.setProperty(FileConfig.FILE_PATH, "/data/output.txt");
parameterServer.connectTo(sink, 10, new DataStore(s, DataStoreType.FILE, p));
return queryAPI.build();
}
class Trainer implements SeepTask {
@Override
public void setUp() { }
@Override
public void processData(ITuple data, API api) { }
@Override
public void processDataGroup(List<ITuple> dataBatch, API api) { }
@Override
public void close() { }
}
class ParameterServer implements SeepTask {
@Override
public void setUp() { }
@Override
public void processData(ITuple data, API api) { }
@Override
public void processDataGroup(List<ITuple> dataBatch, API api) { }
@Override
public void close() { }
}
class Sink implements uk.ac.imperial.lsds.seep.api.operator.sinks.Sink {
@Override
public void setUp() { }
@Override
public void processData(ITuple data, API api) { }
@Override
public void processDataGroup(List<ITuple> dataBatch, API api) { }
@Override
public void close() { }
}
}