use of org.apache.drill.exec.store.mock.MockTableDef.MockScanEntry in project drill by apache.
the class MockGroupScanPOP method applyAssignments.
@SuppressWarnings("unchecked")
@Override
public void applyAssignments(List<DrillbitEndpoint> endpoints) {
Preconditions.checkArgument(endpoints.size() <= getReadEntries().size());
mappings = new LinkedList[endpoints.size()];
int i = 0;
for (MockScanEntry e : this.getReadEntries()) {
if (i == endpoints.size()) {
i -= endpoints.size();
}
LinkedList<MockScanEntry> entries = mappings[i];
if (entries == null) {
entries = new LinkedList<MockScanEntry>();
mappings[i] = entries;
}
entries.add(e);
i++;
}
}
use of org.apache.drill.exec.store.mock.MockTableDef.MockScanEntry in project drill by apache.
the class MockScanBatchCreator method getBatch.
@Override
public CloseableRecordBatch getBatch(ExecutorFragmentContext context, MockSubScanPOP config, List<RecordBatch> children) throws ExecutionSetupException {
Preconditions.checkArgument(children.isEmpty());
final List<MockScanEntry> entries = config.getReadEntries();
MockScanEntry first = entries.get(0);
if (first.isExtended()) {
return extendedMockScan(context, config, entries);
} else {
return legacyMockScan(context, config, entries);
}
}
use of org.apache.drill.exec.store.mock.MockTableDef.MockScanEntry in project drill by apache.
the class MockScanBatchCreator method extendedMockScan.
private CloseableRecordBatch extendedMockScan(FragmentContext context, MockSubScanPOP config, List<MockScanEntry> entries) {
List<SchemaPath> projList = new LinkedList<>();
projList.add(SchemaPath.STAR_COLUMN);
// Create batch readers up front. Handy when we know there are
// only one or two; else use an iterator and create them on the fly.
final List<ManagedReader<SchemaNegotiator>> readers = new LinkedList<>();
for (final MockTableDef.MockScanEntry e : entries) {
readers.add(new ExtendedMockBatchReader(e));
}
// Limit the batch size to 10 MB, or whatever the operator definition
// specified.
int batchSizeBytes = 10 * 1024 * 1024;
MockTableDef.MockScanEntry first = entries.get(0);
if (first.getBatchSize() > 0) {
batchSizeBytes = first.getBatchSize();
}
// Set the scan to allow the maximum row count, allowing
// each reader to adjust the batch size smaller if desired.
ScanFrameworkBuilder builder = new ScanFrameworkBuilder();
builder.batchByteLimit(batchSizeBytes);
builder.projection(projList);
builder.setReaderFactory(new BasicScanFactory(readers.iterator()));
ManagedScanFramework framework = new ManagedScanFramework(builder);
return new OperatorRecordBatch(context, config, new ScanOperatorExec(framework, false), false);
}
Aggregations