在1.16版本的flink上从数据流定义表时,如何定义事件时间和处理时间

9wbgstp7  于 2022-12-20  发布在  Apache
关注(0)|答案(1)|浏览(198)

在Flink 1.16版本中,StreamTableEnvironment.fromDataStream(数据流数据流、表达式...字段)方法已被废弃。
在以前的版本中,可以使用表达式事件时间和处理时间by方法来定义它
.行时间(),
.proctime(),如https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/concepts/time_attributes/中所定义
新版本中的正确方法是什么?
在以前的版本中,我们可以将来自流的表定义为

Table transactionTable = tableEnv.fromDataStream(transactionDataStream,$("Field1"),$("field2"),$("field3")
        ,$("transactionTime").rowtime(),$("ts").proctime());

但方法StreamTableEnvironment.fromDataStream(数据流数据流,表达式...字段)在版本1.15之后已废弃

ss2ws0br

ss2ws0br1#

现在应该使用<T> Table fromDataStream(DataStream<T> dataStream, Schema schema),其中Schema将如下所示:

Schema.newBuilder()
    .column("field1", DataTypes.INT())
    .column("transactionTime", DataTypes.TIMESTAMP_LTZ(3))
    .columnByExpression("ts", "PROCTIME()")
    .watermark("transactionTime", "transactionTime - INTERVAL '10' SECOND"")
    .build();

这里有更多的信息和例子,in the documentation

相关问题