@Override public Reader getReader() throws Exception { return new KeyValuesInputMerger(getInputs()); }
/** * @return true if there are more key-values and advances to next key-values * @throws IOException */ @Override public boolean next() throws IOException { //add the previous nextKVReader back to queue if (!nextKVReaders.isEmpty()) { for (KeyValuesReader kvReader : nextKVReaders) { addToQueue(kvReader); } nextKVReaders.clear(); } KeyValuesReader nextKVReader = null; //get the new nextKVReader with lowest key nextKVReader = pQueue.poll(); if (nextKVReader != null) { nextKVReaders.add(nextKVReader); } while (pQueue.peek() != null) { KeyValuesReader equalValueKVReader = pQueue.poll(); if (pQueue.comparator().compare(nextKVReader, equalValueKVReader) == 0) { nextKVReaders.add(equalValueKVReader); } else { pQueue.add(equalValueKVReader); break; } } return !(nextKVReaders.isEmpty()); }
/** * @return true if there are more key-values and advances to next key-values * @throws IOException */ @Override public boolean next() throws IOException { //add the previous nextKVReader back to queue if (!nextKVReaders.isEmpty()) { for (KeyValuesReader kvReader : nextKVReaders) { addToQueue(kvReader); } nextKVReaders.clear(); } KeyValuesReader nextKVReader = null; //get the new nextKVReader with lowest key nextKVReader = pQueue.poll(); if (nextKVReader != null) { nextKVReaders.add(nextKVReader); } while (pQueue.peek() != null) { KeyValuesReader equalValueKVReader = pQueue.poll(); if (pQueue.comparator().compare(nextKVReader, equalValueKVReader) == 0) { nextKVReaders.add(equalValueKVReader); } else { pQueue.add(equalValueKVReader); break; } } return !(nextKVReaders.isEmpty()); }
@Override public Reader getReader() throws Exception { return new KeyValuesInputMerger(getInputs()); }
public KeyValuesInputMerger(List<? extends Input> shuffleInputs) throws Exception { //get KeyValuesReaders from the LogicalInput and add them to priority queue int initialCapacity = shuffleInputs.size(); kvsIterable = new KeyValuesIterable(initialCapacity); pQueue = new PriorityQueue<KeyValuesReader>(initialCapacity, new KVReaderComparator()); for(Input input : shuffleInputs){ addToQueue((KeyValuesReader)input.getReader()); } }
@Override public Reader getReader() throws Exception { return new KeyValuesInputMerger(getInputs()); }
public KeyValuesInputMerger(List<? extends Input> shuffleInputs) throws Exception { //get KeyValuesReaders from the LogicalInput and add them to priority queue int initialCapacity = shuffleInputs.size(); kvsIterable = new KeyValuesIterable(initialCapacity); pQueue = new PriorityQueue<KeyValuesReader>(initialCapacity, new KVReaderComparator()); for(Input input : shuffleInputs){ addToQueue((KeyValuesReader)input.getReader()); } }
/** * @return true if there are more key-values and advances to next key-values * @throws IOException */ @Override public boolean next() throws IOException { //add the previous nextKVReader back to queue if (!nextKVReaders.isEmpty()) { for (KeyValuesReader kvReader : nextKVReaders) { addToQueue(kvReader); } nextKVReaders.clear(); } KeyValuesReader nextKVReader = null; //get the new nextKVReader with lowest key nextKVReader = pQueue.poll(); if (nextKVReader != null) { nextKVReaders.add(nextKVReader); } while (pQueue.peek() != null) { KeyValuesReader equalValueKVReader = pQueue.poll(); if (pQueue.comparator().compare(nextKVReader, equalValueKVReader) == 0) { nextKVReaders.add(equalValueKVReader); } else { pQueue.add(equalValueKVReader); break; } } return !(nextKVReaders.isEmpty()); }
public KeyValuesInputMerger(List<? extends Input> shuffleInputs) throws Exception { //get KeyValuesReaders from the LogicalInput and add them to priority queue int initialCapacity = shuffleInputs.size(); kvsIterable = new KeyValuesIterable(initialCapacity); pQueue = new PriorityQueue<KeyValuesReader>(initialCapacity, new KVReaderComparator()); for(Input input : shuffleInputs){ addToQueue((KeyValuesReader)input.getReader()); } }