Search in sources :

Example 11 with Task

use of io.dingodb.exec.base.Task in project dingo by dingodb.

the class DingoJobVisitor method visit.

@Override
public Collection<Output> visit(@Nonnull DingoPartScan rel) {
    String tableName = getSimpleName(rel.getTable());
    TableDefinition td = Services.META.getTableDefinition(tableName);
    Map<String, Location> parts = Services.META.getPartLocations(tableName);
    List<Output> outputs = new ArrayList<>(parts.size());
    TableId tableId = new TableId(Services.META.getTableKey(tableName));
    String filterStr = null;
    if (rel.getFilter() != null) {
        filterStr = RexConverter.convert(rel.getFilter()).toString();
    }
    for (Map.Entry<String, Location> entry : parts.entrySet()) {
        final Object partId = entry.getKey();
        PartScanOperator operator = new PartScanOperator(tableId, entry.getKey(), td.getTupleSchema(), td.getKeyMapping(), filterStr, rel.getSelection());
        operator.setId(idGenerator.get());
        Task task = job.getOrCreate(entry.getValue());
        task.putOperator(operator);
        operator.getSoleOutput().setHint(OutputHint.of(tableName, partId));
        outputs.addAll(operator.getOutputs());
    }
    return outputs;
}
Also used : TableId(io.dingodb.common.table.TableId) Task(io.dingodb.exec.base.Task) ArrayList(java.util.ArrayList) PartScanOperator(io.dingodb.exec.operator.PartScanOperator) Output(io.dingodb.exec.base.Output) TableDefinition(io.dingodb.common.table.TableDefinition) Map(java.util.Map) Location(io.dingodb.meta.Location)

Example 12 with Task

use of io.dingodb.exec.base.Task in project dingo by dingodb.

the class JobRunner method createEnumerator.

@Nonnull
public Enumerator<Object[]> createEnumerator() {
    if (job.isEmpty()) {
        return Linq4j.emptyEnumerator();
    }
    Task task = distributeTasks();
    assert task.getLocation().equals(Services.META.currentLocation()) : "The root task must be at current location.";
    task.init();
    task.run();
    return new RootEnumerator(task.getRoot());
}
Also used : Task(io.dingodb.exec.base.Task) Nonnull(javax.annotation.Nonnull)

Example 13 with Task

use of io.dingodb.exec.base.Task in project dingo by dingodb.

the class DingoJobVisitor method visit.

@Override
public Collection<Output> visit(@Nonnull DingoGetByKeys rel) {
    String tableName = getSimpleName(rel.getTable());
    final Map<String, Location> partLocations = Services.META.getPartLocations(tableName);
    final TableDefinition td = Services.META.getTableDefinition(tableName);
    final PartitionStrategy ps = new SimpleHashStrategy(partLocations.size());
    final TableId tableId = new TableId(Services.META.getTableKey(tableName));
    Map<String, List<Object[]>> partMap = ps.partKeyTuples(rel.getKeyTuples());
    List<Output> outputs = new LinkedList<>();
    for (Map.Entry<String, List<Object[]>> entry : partMap.entrySet()) {
        final Object partId = entry.getKey();
        GetByKeysOperator operator = new GetByKeysOperator(tableId, partId, td.getTupleSchema(), td.getKeyMapping(), entry.getValue(), rel.getSelection());
        operator.setId(idGenerator.get());
        Task task = job.getOrCreate(partLocations.get(entry.getKey()));
        task.putOperator(operator);
        operator.getSoleOutput().setHint(OutputHint.of(tableName, partId));
        outputs.addAll(operator.getOutputs());
    }
    return outputs;
}
Also used : TableId(io.dingodb.common.table.TableId) Task(io.dingodb.exec.base.Task) LinkedList(java.util.LinkedList) GetByKeysOperator(io.dingodb.exec.operator.GetByKeysOperator) Output(io.dingodb.exec.base.Output) TableDefinition(io.dingodb.common.table.TableDefinition) List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) SimpleHashStrategy(io.dingodb.exec.partition.SimpleHashStrategy) Map(java.util.Map) Location(io.dingodb.meta.Location) PartitionStrategy(io.dingodb.exec.partition.PartitionStrategy)

Example 14 with Task

use of io.dingodb.exec.base.Task in project dingo by dingodb.

the class DingoJobVisitor method visit.

@Override
public Collection<Output> visit(@Nonnull DingoAggregate rel) {
    Collection<Output> inputs = dingo(rel.getInput()).accept(this);
    List<Output> outputs = new LinkedList<>();
    for (Output input : inputs) {
        Operator operator = new AggregateOperator(rel.getKeys(), rel.getAggList());
        Task task = input.getTask();
        operator.setId(idGenerator.get());
        task.putOperator(operator);
        input.setLink(operator.getInput(0));
        outputs.addAll(operator.getOutputs());
    }
    return outputs;
}
Also used : SumUpOperator(io.dingodb.exec.operator.SumUpOperator) AggregateOperator(io.dingodb.exec.operator.AggregateOperator) SortOperator(io.dingodb.exec.operator.SortOperator) RootOperator(io.dingodb.exec.operator.RootOperator) PartScanOperator(io.dingodb.exec.operator.PartScanOperator) SendOperator(io.dingodb.exec.operator.SendOperator) ReceiveOperator(io.dingodb.exec.operator.ReceiveOperator) ProjectOperator(io.dingodb.exec.operator.ProjectOperator) ValuesOperator(io.dingodb.exec.operator.ValuesOperator) PartUpdateOperator(io.dingodb.exec.operator.PartUpdateOperator) ReduceOperator(io.dingodb.exec.operator.ReduceOperator) Operator(io.dingodb.exec.base.Operator) GetByKeysOperator(io.dingodb.exec.operator.GetByKeysOperator) PartitionOperator(io.dingodb.exec.operator.PartitionOperator) PartDeleteOperator(io.dingodb.exec.operator.PartDeleteOperator) PartInsertOperator(io.dingodb.exec.operator.PartInsertOperator) CoalesceOperator(io.dingodb.exec.operator.CoalesceOperator) Task(io.dingodb.exec.base.Task) Output(io.dingodb.exec.base.Output) AggregateOperator(io.dingodb.exec.operator.AggregateOperator) LinkedList(java.util.LinkedList)

Example 15 with Task

use of io.dingodb.exec.base.Task in project dingo by dingodb.

the class DingoJobVisitor method visit.

@Override
public Collection<Output> visit(@Nonnull DingoValues rel) {
    Task task = job.getOrCreate(Services.META.currentLocation());
    ValuesOperator operator = new ValuesOperator(rel.getValues());
    operator.setId(idGenerator.get());
    task.putOperator(operator);
    return operator.getOutputs();
}
Also used : Task(io.dingodb.exec.base.Task) ValuesOperator(io.dingodb.exec.operator.ValuesOperator)

Aggregations

Task (io.dingodb.exec.base.Task)18 Output (io.dingodb.exec.base.Output)12 ValuesOperator (io.dingodb.exec.operator.ValuesOperator)9 RootOperator (io.dingodb.exec.operator.RootOperator)8 SendOperator (io.dingodb.exec.operator.SendOperator)8 GetByKeysOperator (io.dingodb.exec.operator.GetByKeysOperator)7 PartScanOperator (io.dingodb.exec.operator.PartScanOperator)7 PartitionOperator (io.dingodb.exec.operator.PartitionOperator)7 ReceiveOperator (io.dingodb.exec.operator.ReceiveOperator)7 Location (io.dingodb.meta.Location)7 LinkedList (java.util.LinkedList)7 Operator (io.dingodb.exec.base.Operator)6 AggregateOperator (io.dingodb.exec.operator.AggregateOperator)6 CoalesceOperator (io.dingodb.exec.operator.CoalesceOperator)6 PartDeleteOperator (io.dingodb.exec.operator.PartDeleteOperator)6 PartInsertOperator (io.dingodb.exec.operator.PartInsertOperator)6 PartUpdateOperator (io.dingodb.exec.operator.PartUpdateOperator)6 ProjectOperator (io.dingodb.exec.operator.ProjectOperator)6 ReduceOperator (io.dingodb.exec.operator.ReduceOperator)6 SortOperator (io.dingodb.exec.operator.SortOperator)6