use of io.prestosql.spi.Node in project hetu-core by openlookeng.
the class TpcdsSplitManager method getSplits.
@Override
public ConnectorSplitSource getSplits(ConnectorTransactionHandle transaction, ConnectorSession session, ConnectorTableLayoutHandle layout, SplitSchedulingStrategy splitSchedulingStrategy) {
Set<Node> nodes = nodeManager.getRequiredWorkerNodes();
checkState(!nodes.isEmpty(), "No TPCDS nodes available");
int totalParts = nodes.size() * splitsPerNode;
int partNumber = 0;
ImmutableList.Builder<ConnectorSplit> splits = ImmutableList.builder();
if (session.isSnapshotEnabled()) {
// Snapshot: Modify splits as needed to all them to be scheduled on any node.
// This allows them to be processed by a different worker after resume.
List<HostAddress> addresses = nodes.stream().map(Node::getHostAndPort).collect(Collectors.toList());
for (int i = 0; i < totalParts; i++) {
splits.add(new TpcdsSplit(partNumber, totalParts, addresses, noSexism));
partNumber++;
}
} else {
// Split the data using split and skew by the number of nodes available.
for (Node node : nodes) {
for (int i = 0; i < splitsPerNode; i++) {
splits.add(new TpcdsSplit(partNumber, totalParts, ImmutableList.of(node.getHostAndPort()), noSexism));
partNumber++;
}
}
}
return new FixedSplitSource(splits.build());
}
Aggregations