I use flink stream sql to write a demo about "group by". The records are [(bj, 1), (bj, 3), (bj, 5)]. I group by the first element and sum the second element. Every time I run the program, the result is different. It seems that the records are out of order. Even sometimes record is lost. I am confused about that. The code is as below:
public class Test { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.getTableEnvironment(env); DataStream<Tuple2<String, Long>> dataStream = env.fromElements( Tuple2.of("bj", 1L), Tuple2.of("bj", 3L), Tuple2.of("bj", 5L)); tEnv.registerDataStream("person", dataStream); String sql = "select f0, sum(f1) from person group by f0"; Table table = tEnv.sqlQuery(sql); tEnv.toRetractStream(table, Row.class).print(); env.execute(); } } The results may be as below: 1> (true,bj,1) 1> (false,bj,1) 1> (true,bj,4) 1> (false,bj,4) 1> (true,bj,9) 1> (true,bj,5) 1> (false,bj,5) 1> (true,bj,8) 1> (false,bj,8) 1> (true,bj,9)