在Apache Flink Java中创建翻滚窗口时出错

在Apache Flink Java中创建翻滚窗口时出错,java,apache-flink,Java,Apache Flink,我尝试在FlinkJava中创建一个翻滚时间窗口,每个窗口有两行。这必须基于dateTime(TimeStamp3数据类型)或unixDateTime(BIGINT数据类型)列。我添加了两个不同代码版本的代码。我得到的错误被放在代码上方 当我打印表对象的数据类型时,我看到: |--mID:INT |--日期时间:时间戳(3)*行时间* |--价值:双 |--unixDateTime:BIGINT |--mType:字符串 StreamExecutionEnvironment fsEnv = St

我尝试在FlinkJava中创建一个翻滚时间窗口,每个窗口有两行。这必须基于dateTime(TimeStamp3数据类型)或unixDateTime(BIGINT数据类型)列。我添加了两个不同代码版本的代码。我得到的错误被放在代码上方

当我打印
对象的数据类型时,我看到:

|--mID:INT
|--日期时间:时间戳(3)*行时间*
|--价值:双
|--unixDateTime:BIGINT
|--mType:字符串

StreamExecutionEnvironment fsEnv = StreamExecutionEnvironment.getExecutionEnvironment();
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(fsEnv);   
        fsEnv.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);

    TupleTypeInfo<Tuple5<Integer, Timestamp, Double, Long, String>> tupleType = new TupleTypeInfo<>(
        Types.INT(),
        Types.SQL_TIMESTAMP(),
        Types.DOUBLE(),
        Types.LONG(),
        Types.STRING());
        DataStream<Tuple5<Integer, Timestamp, Double, Long, String>> dsTuple =
                tableEnv.toAppendStream(HTable, tupleType);

//When I run below code I get this error: Caused by: java.lang.RuntimeException: Rowtime timestamp is null. Please make sure that a proper TimestampAssigner is defined and the stream environment uses the EventTime time characteristic.

Table table = tableEnv.fromDataStream(dsTuple, "mID, dateTime.rowtime, mValue, unixDateTime, mType");
   DataStream<Row> stream = tableEnv.toAppendStream(table, Row.class);
stream.print();

//When I run below code I get this error: Exception in thread "main" java.lang.UnsupportedOperationException: Event-time grouping windows on row intervals are currently not supported.

   Table table = tableEnv.fromDataStream(dsTuple, "mID, dateTime.rowtime, measurementValue, unixDateTime, measurementType")
.window(Tumble.over("2.rows")
.on("dateTime")
.as("a"))
.groupBy("a")
.select("AVG(mValue)");
    DataStream<Row> stream = tableEnv.toAppendStream(table, Row.class);
    stream.print();






StreamExecutionEnvironment fsEnv=StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tableEnv=StreamTableEnvironment.create(fsEnv);
fsEnv.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
TupleTypeInfo tupleType=新的TupleTypeInfo(
type.INT(),
Types.SQL\u TIMESTAMP(),
类型。DOUBLE(),
类型。LONG(),
字符串());
数据流dsTuple=
tableEnv.toAppendStream(HTable,tupleType);
//当我在下面的代码中运行时,我得到以下错误:由以下原因引起:java.lang.RuntimeException:Rowtime时间戳为null。请确保定义了正确的TimestampAssigner,并且流环境使用EventTime特性。
Table Table=tableEnv.fromDataStream(数据流的数据元组,“mID,dateTime.rowtime,mValue,unixDateTime,mType”);
DataStream stream=tableEnv.toAppendStream(表,行,类);
stream.print();
//当我在下面的代码中运行时,我得到以下错误:线程“main”java.lang.UnsupportedOperationException中的异常:当前不支持行间隔上的事件时间分组窗口。
Table Table=tableEnv.fromDataStream(数据流的数据元组,“mID,dateTime.rowtime,measurementValue,unixDateTime,measurementType”)
.窗户(翻滚(“2排”)
.on(“日期时间”)
.作为(“a”))
.groupBy(“a”)
。选择(“平均值(MVValue)”;
DataStream stream=tableEnv.toAppendStream(表,行,类);
stream.print();

流表上基于时间的操作要求您明确告知Flink如何处理时间。你会想看报纸的


您需要特别注意上的部分。

谢谢您的回答。我实现了您的解决方案,但现在出现了新的错误。我根据新的情况编辑了上面的问题。你知道如何解决这个错误吗?有解决办法吗?