@SuppressWarnings("unchecked") private static <T> boolean trySetOutputType( Function userFunction, TypeInformation<T> outTypeInfo, ExecutionConfig executionConfig) { Preconditions.checkNotNull(outTypeInfo); Preconditions.checkNotNull(executionConfig); if (OutputTypeConfigurable.class.isAssignableFrom(userFunction.getClass())) { ((OutputTypeConfigurable<T>) userFunction).setOutputType(outTypeInfo, executionConfig); return true; } return false; }
public <IN1, IN2, OUT> void addCoOperator( Integer vertexID, String slotSharingGroup, @Nullable String coLocationGroup, TwoInputStreamOperator<IN1, IN2, OUT> taskOperatorObject, TypeInformation<IN1> in1TypeInfo, TypeInformation<IN2> in2TypeInfo, TypeInformation<OUT> outTypeInfo, String operatorName) { addNode(vertexID, slotSharingGroup, coLocationGroup, TwoInputStreamTask.class, taskOperatorObject, operatorName); TypeSerializer<OUT> outSerializer = (outTypeInfo != null) && !(outTypeInfo instanceof MissingTypeInfo) ? outTypeInfo.createSerializer(executionConfig) : null; setSerializers(vertexID, in1TypeInfo.createSerializer(executionConfig), in2TypeInfo.createSerializer(executionConfig), outSerializer); if (taskOperatorObject instanceof OutputTypeConfigurable) { @SuppressWarnings("unchecked") OutputTypeConfigurable<OUT> outputTypeConfigurable = (OutputTypeConfigurable<OUT>) taskOperatorObject; // sets the output type which must be know at StreamGraph creation time outputTypeConfigurable.setOutputType(outTypeInfo, executionConfig); } if (LOG.isDebugEnabled()) { LOG.debug("CO-TASK: {}", vertexID); } }
OutputTypeConfigurable<OUT> outputTypeConfigurable = (OutputTypeConfigurable<OUT>) operatorObject; outputTypeConfigurable.setOutputType(outTypeInfo, executionConfig);
/** * Ensure that we get some output from the given operator when pushing in an element and * setting watermark and processing time to {@code Long.MAX_VALUE}. */ private static <K, IN, OUT> void processElementAndEnsureOutput( OneInputStreamOperator<IN, OUT> operator, KeySelector<IN, K> keySelector, TypeInformation<K> keyType, IN element) throws Exception { KeyedOneInputStreamOperatorTestHarness<K, IN, OUT> testHarness = new KeyedOneInputStreamOperatorTestHarness<>( operator, keySelector, keyType); if (operator instanceof OutputTypeConfigurable) { // use a dummy type since window functions just need the ExecutionConfig // this is also only needed for Fold, which we're getting rid off soon. ((OutputTypeConfigurable) operator).setOutputType(BasicTypeInfo.STRING_TYPE_INFO, new ExecutionConfig()); } testHarness.open(); testHarness.setProcessingTime(0); testHarness.processWatermark(Long.MIN_VALUE); testHarness.processElement(new StreamRecord<>(element, 0)); // provoke any processing-time/event-time triggers testHarness.setProcessingTime(Long.MAX_VALUE); testHarness.processWatermark(Long.MAX_VALUE); // we at least get the two watermarks and should also see an output element assertTrue(testHarness.getOutput().size() >= 3); testHarness.close(); }
@SuppressWarnings("unchecked") private static <T> boolean trySetOutputType( Function userFunction, TypeInformation<T> outTypeInfo, ExecutionConfig executionConfig) { Preconditions.checkNotNull(outTypeInfo); Preconditions.checkNotNull(executionConfig); if (OutputTypeConfigurable.class.isAssignableFrom(userFunction.getClass())) { ((OutputTypeConfigurable<T>) userFunction).setOutputType(outTypeInfo, executionConfig); return true; } return false; }
@SuppressWarnings("unchecked") private static <T> boolean trySetOutputType( Function userFunction, TypeInformation<T> outTypeInfo, ExecutionConfig executionConfig) { Preconditions.checkNotNull(outTypeInfo); Preconditions.checkNotNull(executionConfig); if (OutputTypeConfigurable.class.isAssignableFrom(userFunction.getClass())) { ((OutputTypeConfigurable<T>) userFunction).setOutputType(outTypeInfo, executionConfig); return true; } return false; }
@SuppressWarnings("unchecked") private static <T> boolean trySetOutputType( Function userFunction, TypeInformation<T> outTypeInfo, ExecutionConfig executionConfig) { Preconditions.checkNotNull(outTypeInfo); Preconditions.checkNotNull(executionConfig); if (OutputTypeConfigurable.class.isAssignableFrom(userFunction.getClass())) { ((OutputTypeConfigurable<T>) userFunction).setOutputType(outTypeInfo, executionConfig); return true; } return false; }
public <IN1, IN2, OUT> void addCoOperator( Integer vertexID, String slotSharingGroup, @Nullable String coLocationGroup, TwoInputStreamOperator<IN1, IN2, OUT> taskOperatorObject, TypeInformation<IN1> in1TypeInfo, TypeInformation<IN2> in2TypeInfo, TypeInformation<OUT> outTypeInfo, String operatorName) { addNode(vertexID, slotSharingGroup, coLocationGroup, TwoInputStreamTask.class, taskOperatorObject, operatorName); TypeSerializer<OUT> outSerializer = (outTypeInfo != null) && !(outTypeInfo instanceof MissingTypeInfo) ? outTypeInfo.createSerializer(executionConfig) : null; setSerializers(vertexID, in1TypeInfo.createSerializer(executionConfig), in2TypeInfo.createSerializer(executionConfig), outSerializer); if (taskOperatorObject instanceof OutputTypeConfigurable) { @SuppressWarnings("unchecked") OutputTypeConfigurable<OUT> outputTypeConfigurable = (OutputTypeConfigurable<OUT>) taskOperatorObject; // sets the output type which must be know at StreamGraph creation time outputTypeConfigurable.setOutputType(outTypeInfo, executionConfig); } if (LOG.isDebugEnabled()) { LOG.debug("CO-TASK: {}", vertexID); } }
public <IN1, IN2, OUT> void addCoOperator( Integer vertexID, String slotSharingGroup, @Nullable String coLocationGroup, TwoInputStreamOperator<IN1, IN2, OUT> taskOperatorObject, TypeInformation<IN1> in1TypeInfo, TypeInformation<IN2> in2TypeInfo, TypeInformation<OUT> outTypeInfo, String operatorName) { addNode(vertexID, slotSharingGroup, coLocationGroup, TwoInputStreamTask.class, taskOperatorObject, operatorName); TypeSerializer<OUT> outSerializer = (outTypeInfo != null) && !(outTypeInfo instanceof MissingTypeInfo) ? outTypeInfo.createSerializer(executionConfig) : null; setSerializers(vertexID, in1TypeInfo.createSerializer(executionConfig), in2TypeInfo.createSerializer(executionConfig), outSerializer); if (taskOperatorObject instanceof OutputTypeConfigurable) { @SuppressWarnings("unchecked") OutputTypeConfigurable<OUT> outputTypeConfigurable = (OutputTypeConfigurable<OUT>) taskOperatorObject; // sets the output type which must be know at StreamGraph creation time outputTypeConfigurable.setOutputType(outTypeInfo, executionConfig); } if (LOG.isDebugEnabled()) { LOG.debug("CO-TASK: {}", vertexID); } }
public <IN1, IN2, OUT> void addCoOperator( Integer vertexID, String slotSharingGroup, TwoInputStreamOperator<IN1, IN2, OUT> taskOperatorObject, TypeInformation<IN1> in1TypeInfo, TypeInformation<IN2> in2TypeInfo, TypeInformation<OUT> outTypeInfo, String operatorName) { addNode(vertexID, slotSharingGroup, TwoInputStreamTask.class, taskOperatorObject, operatorName); TypeSerializer<OUT> outSerializer = (outTypeInfo != null) && !(outTypeInfo instanceof MissingTypeInfo) ? outTypeInfo.createSerializer(executionConfig) : null; setSerializers(vertexID, in1TypeInfo.createSerializer(executionConfig), in2TypeInfo.createSerializer(executionConfig), outSerializer); if (taskOperatorObject instanceof OutputTypeConfigurable) { @SuppressWarnings("unchecked") OutputTypeConfigurable<OUT> outputTypeConfigurable = (OutputTypeConfigurable<OUT>) taskOperatorObject; // sets the output type which must be know at StreamGraph creation time outputTypeConfigurable.setOutputType(outTypeInfo, executionConfig); } if (LOG.isDebugEnabled()) { LOG.debug("CO-TASK: {}", vertexID); } }
OutputTypeConfigurable<OUT> outputTypeConfigurable = (OutputTypeConfigurable<OUT>) operatorObject; outputTypeConfigurable.setOutputType(outTypeInfo, executionConfig);
OutputTypeConfigurable<OUT> outputTypeConfigurable = (OutputTypeConfigurable<OUT>) operatorObject; outputTypeConfigurable.setOutputType(outTypeInfo, executionConfig);
OutputTypeConfigurable<OUT> outputTypeConfigurable = (OutputTypeConfigurable<OUT>) operatorObject; outputTypeConfigurable.setOutputType(outTypeInfo, executionConfig);