private static GroupInputSpecProto convertGroupInputSpecToProto(GroupInputSpec groupInputSpec) { GroupInputSpecProto.Builder builder = GroupInputSpecProto.newBuilder(); builder.setGroupName(groupInputSpec.getGroupName()); builder.addAllGroupVertices(groupInputSpec.getGroupVertices()); builder.setMergedInputDescriptor(convertToProto(groupInputSpec.getMergedInputDescriptor())); return builder.build(); }
@Override public Map<String, List<String>> getInputVertexGroups() { checkAndThrowIfDone(); Map<String, List<String>> inputGroups = Maps.newHashMap(); if (managedVertex.getGroupInputSpecList() != null) { for (GroupInputSpec group : managedVertex.getGroupInputSpecList()) { inputGroups.put(group.getGroupName(), Collections.unmodifiableList(group.getGroupVertices())); } } return inputGroups; }
private void initializeGroupInputs() throws TezException { if (groupInputSpecs != null && !groupInputSpecs.isEmpty()) { groupInputsMap = new ConcurrentHashMap<String, MergedLogicalInput>(groupInputSpecs.size()); for (GroupInputSpec groupInputSpec : groupInputSpecs) { if (LOG.isDebugEnabled()) { LOG.debug("Initializing GroupInput using GroupInputSpec: " + groupInputSpec); } MergedInputContext mergedInputContext = new TezMergedInputContextImpl(groupInputSpec.getMergedInputDescriptor().getUserPayload(), groupInputSpec.getGroupName(), groupInputsMap, inputReadyTracker, localDirs, this); List<Input> inputs = Lists.newArrayListWithCapacity(groupInputSpec.getGroupVertices().size()); for (String groupVertex : groupInputSpec.getGroupVertices()) { inputs.add(inputsMap.get(groupVertex)); } MergedLogicalInput groupInput = (MergedLogicalInput) createMergedInput(groupInputSpec.getMergedInputDescriptor(), mergedInputContext, inputs); groupInputsMap.put(groupInputSpec.getGroupName(), groupInput); } } }
@Override public String getVertexGroupName() { if (destinationVertex.getGroupInputSpecList() != null) { for (GroupInputSpec group : destinationVertex.getGroupInputSpecList()) { if (group.getGroupVertices().contains(getSourceVertexName())) { return group.getGroupName(); } } } return null; } }
runInputMap.put(groupInputSpec.getGroupName(), groupInputsMap.get(groupInputSpec.getGroupName())); groupInputs.addAll(groupInputSpec.getGroupVertices()); if (!inputAlreadyStarted(taskSpec.getVertexName(), group.getGroupName())) { numAutoStarts++; this.initializerCompletionService.submit(new StartInputCallable(groupInputsMap.get(group .getGroupName()), group.getGroupName())); LOG.info("InputGroup: " + group.getGroupName() + " being auto started by the framework. Subsequent instance will not be auto-started");