У меня есть неупорядоченный DataStream<Event>
, который я хочу отсортировать так, чтобы события были упорядочены по их временным меткам.Я упростил свой вариант использования до того, что у моего класса Event есть только одно поле - поле timestamp
:
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tableEnv = TableEnvironment.getTableEnvironment(env);
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
env.setParallelism(1);
DataStream<Event> eventStream = env.addSource(new OutOfOrderEventSource())
.assignTimestampsAndWatermarks(new TimestampsAndWatermarks());
Table events = tableEnv.fromDataStream(eventStream, "timestamp.rowtime");
tableEnv.registerTable("events", events);
Table sorted = tableEnv.sqlQuery("SELECT timestamp FROM events ORDER BY eventTime ASC");
DataStream<Row> sortedEventStream = tableEnv.toAppendStream(sorted, Row.class);
sortedEventStream.print();
env.execute();
}
Я получаю эту ошибку:
Исключение в потоке "main" org.apache.flink.table.api.SqlParserException: ошибка синтаксического анализа SQL.Обнаружена «отметка времени FROM» в строке 1, столбце 8.
Похоже, я неправильно указываю атрибут времени события, но неясно, что не так.