use of io.dingodb.common.table.TupleSchema in project dingo by dingodb.
the class DingoJobVisitor method visit.
@Override
public Collection<Output> visit(@Nonnull DingoExchange rel) {
Collection<Output> inputs = dingo(rel.getInput()).accept(this);
List<Output> outputs = new LinkedList<>();
TupleSchema schema = TupleSchema.fromRelDataType(rel.getRowType());
for (Output input : inputs) {
Task task = input.getTask();
Location target = input.getTargetLocation();
if (target == null) {
target = Services.META.currentLocation();
}
if (!target.equals(task.getLocation())) {
Id id = idGenerator.get();
Id receiveId = idGenerator.get();
SendOperator send = new SendOperator(target.getHost(), target.getPort(), receiveId, schema);
send.setId(id);
task.putOperator(send);
input.setLink(send.getInput(0));
ReceiveOperator receive = new ReceiveOperator(task.getHost(), task.getLocation().getPort(), schema);
receive.setId(receiveId);
receive.getSoleOutput().copyHint(input);
Task rcvTask = job.getOrCreate(target);
rcvTask.putOperator(receive);
outputs.addAll(receive.getOutputs());
} else {
outputs.add(input);
}
}
return outputs;
}
use of io.dingodb.common.table.TupleSchema in project dingo by dingodb.
the class CsvUtils method readCsv.
/**
* Read a csv stream into tuples. The first line is the tuple schema definition.
*
* @param is the csv stream
* @return iterator of tuples
* @throws IOException when errors occurred in reading the stream
*/
@Nonnull
public static Iterator<Object[]> readCsv(InputStream is) throws IOException {
final Iterator<String[]> it = PARSER.readValues(is, String[].class);
if (it.hasNext()) {
String[] types = it.next();
TupleSchema schema = TupleSchema.ofTypes(types);
return Iterators.transform(it, schema::parse);
}
return Iterators.transform(it, s -> s);
}
Aggregations