我的手机坏了 DataStream<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解析失败。在第1行第8列遇到“timestamp from”。
似乎我没有以正确的方式指定event time属性,但是不清楚出了什么问题。
1条答案
按热度按时间uinbv5nw1#
结果问题出在
timestamp
作为事件类中的字段名。把它改成eventTime
足以让一切正常运转: