/** * Returns a {@link PTransform} like the input {@link PTransform}, but with each output to {@code * originalPCollection} replaced with an output (with the same local name) to {@code * newPCollection}. */ private static PTransform updateOutputs( PTransform transform, Map<String, PCollectionNode> originalToPartial) { PTransform.Builder updatedTransformBuilder = transform.toBuilder(); for (Map.Entry<String, String> output : transform.getOutputsMap().entrySet()) { if (originalToPartial.containsKey(output.getValue())) { updatedTransformBuilder.putOutputs( output.getKey(), originalToPartial.get(output.getValue()).getId()); } } return updatedTransformBuilder.build(); }
.forEach( (transformId, transform) -> { RunnerApi.PTransform.Builder transformBuilder = transform.toBuilder(); transform .getInputsMap()
PipelineNode.pTransform( transformNode.getId(), transform.toBuilder().clearInputs().putAllInputs(validInputs).build());
newComponents.putAllCoders(components.getCodersMap()); Builder newPTransform = spk.toBuilder();
gbk.getSpec().getUrn()); PTransform.Builder newTransform = gbk.toBuilder(); Components.Builder newComponents = Components.newBuilder(); String inputId = getOnlyElement(gbk.getInputsMap().values());
node.getId(), node.getTransform() .toBuilder() .mergeSpec(
private void removeDescendants(RunnerApi.Pipeline.Builder pipeline, String parentId) { RunnerApi.PTransform parentProto = pipeline.getComponents().getTransformsOrDefault(parentId, null); if (parentProto != null) { for (String childId : parentProto.getSubtransformsList()) { removeDescendants(pipeline, childId); pipeline.getComponentsBuilder().removeTransforms(childId); } pipeline .getComponentsBuilder() .putTransforms(parentId, parentProto.toBuilder().clearSubtransforms().build()); } }