Search in sources :

Example 1 with GeneratedWatermarkGenerator

use of org.apache.flink.table.runtime.generated.GeneratedWatermarkGenerator in project flink by apache.

the class StreamExecWatermarkAssigner method translateToPlanInternal.

@SuppressWarnings("unchecked")
@Override
protected Transformation<RowData> translateToPlanInternal(PlannerBase planner, ExecNodeConfig config) {
    final ExecEdge inputEdge = getInputEdges().get(0);
    final Transformation<RowData> inputTransform = (Transformation<RowData>) inputEdge.translateToPlan(planner);
    final GeneratedWatermarkGenerator watermarkGenerator = WatermarkGeneratorCodeGenerator.generateWatermarkGenerator(config.getTableConfig(), (RowType) inputEdge.getOutputType(), watermarkExpr, JavaScalaConversionUtil.toScala(Optional.empty()));
    final long idleTimeout = config.get(ExecutionConfigOptions.TABLE_EXEC_SOURCE_IDLE_TIMEOUT).toMillis();
    final WatermarkAssignerOperatorFactory operatorFactory = new WatermarkAssignerOperatorFactory(rowtimeFieldIndex, idleTimeout, watermarkGenerator);
    return ExecNodeUtil.createOneInputTransformation(inputTransform, createTransformationMeta(WATERMARK_ASSIGNER_TRANSFORMATION, config), operatorFactory, InternalTypeInfo.of(getOutputType()), inputTransform.getParallelism());
}
Also used : GeneratedWatermarkGenerator(org.apache.flink.table.runtime.generated.GeneratedWatermarkGenerator) RowData(org.apache.flink.table.data.RowData) Transformation(org.apache.flink.api.dag.Transformation) ExecEdge(org.apache.flink.table.planner.plan.nodes.exec.ExecEdge) WatermarkAssignerOperatorFactory(org.apache.flink.table.runtime.operators.wmassigners.WatermarkAssignerOperatorFactory)

Example 2 with GeneratedWatermarkGenerator

use of org.apache.flink.table.runtime.generated.GeneratedWatermarkGenerator in project flink by apache.

the class WatermarkPushDownSpec method apply.

@Override
public void apply(DynamicTableSource tableSource, SourceAbilityContext context) {
    if (tableSource instanceof SupportsWatermarkPushDown) {
        GeneratedWatermarkGenerator generatedWatermarkGenerator = WatermarkGeneratorCodeGenerator.generateWatermarkGenerator(context.getTableConfig(), context.getSourceRowType(), watermarkExpr, Option.apply("context"));
        Configuration configuration = context.getTableConfig().getConfiguration();
        WatermarkGeneratorSupplier<RowData> supplier = new GeneratedWatermarkGeneratorSupplier(configuration, generatedWatermarkGenerator);
        WatermarkStrategy<RowData> watermarkStrategy = WatermarkStrategy.forGenerator(supplier);
        if (idleTimeoutMillis > 0) {
            watermarkStrategy = watermarkStrategy.withIdleness(Duration.ofMillis(idleTimeoutMillis));
        }
        ((SupportsWatermarkPushDown) tableSource).applyWatermark(watermarkStrategy);
    } else {
        throw new TableException(String.format("%s does not support SupportsWatermarkPushDown.", tableSource.getClass().getName()));
    }
}
Also used : GeneratedWatermarkGenerator(org.apache.flink.table.runtime.generated.GeneratedWatermarkGenerator) RowData(org.apache.flink.table.data.RowData) TableException(org.apache.flink.table.api.TableException) Configuration(org.apache.flink.configuration.Configuration) GeneratedWatermarkGeneratorSupplier(org.apache.flink.table.runtime.generated.GeneratedWatermarkGeneratorSupplier) SupportsWatermarkPushDown(org.apache.flink.table.connector.source.abilities.SupportsWatermarkPushDown)

Aggregations

RowData (org.apache.flink.table.data.RowData)2 GeneratedWatermarkGenerator (org.apache.flink.table.runtime.generated.GeneratedWatermarkGenerator)2 Transformation (org.apache.flink.api.dag.Transformation)1 Configuration (org.apache.flink.configuration.Configuration)1 TableException (org.apache.flink.table.api.TableException)1 SupportsWatermarkPushDown (org.apache.flink.table.connector.source.abilities.SupportsWatermarkPushDown)1 ExecEdge (org.apache.flink.table.planner.plan.nodes.exec.ExecEdge)1 GeneratedWatermarkGeneratorSupplier (org.apache.flink.table.runtime.generated.GeneratedWatermarkGeneratorSupplier)1 WatermarkAssignerOperatorFactory (org.apache.flink.table.runtime.operators.wmassigners.WatermarkAssignerOperatorFactory)1