public List<VectorContainer> getHeldRecordBatches() { ArrayList<VectorContainer> containerList = Lists.newArrayList(); for (BatchSchema bs : batches.keySet()) { for (RecordBatchData bd : batches.get(bs)) { VectorContainer c = bd.getContainer(); c.setRecordCount(bd.getRecordCount()); containerList.add(c); } } batches.clear(); return containerList; }
public BroadcastSenderRootExec(RootFragmentContext context, RecordBatch incoming, BroadcastSender config) throws OutOfMemoryException { super(context, context.newOperatorContext(config, null), config); this.ok = true; this.incoming = incoming; this.config = config; this.handle = context.getHandle(); List<MinorFragmentEndpoint> destinations = config.getDestinations(); ArrayListMultimap<DrillbitEndpoint, Integer> dests = ArrayListMultimap.create(); for(MinorFragmentEndpoint destination : destinations) { dests.put(destination.getEndpoint(), destination.getId()); } int destCount = dests.keySet().size(); int i = 0; this.tunnels = new AccountingDataTunnel[destCount]; this.receivingMinorFragments = new int[destCount][]; for(final DrillbitEndpoint ep : dests.keySet()){ List<Integer> minorsList= dests.get(ep); int[] minorsArray = new int[minorsList.size()]; int x = 0; for(Integer m : minorsList){ minorsArray[x++] = m; } receivingMinorFragments[i] = minorsArray; tunnels[i] = context.getDataTunnel(ep); i++; } }
@SuppressWarnings("resource") public void build(VectorContainer outputContainer) throws SchemaChangeException { outputContainer.clear(); if (batches.keySet().size() > 1) { throw new SchemaChangeException("Sort currently only supports a single schema."); BatchSchema schema = batches.keySet().iterator().next(); List<RecordBatchData> data = batches.get(schema);