Converting Tables to DataStreams
Tables are updated dynamically as the result of streaming queries. To convert them into DataStreams, you can either append them or retract them based on the SQL query you have chosen.
The Table changes as new records arrive on the query’s input streams. These
Tables can be converted back into DataStreams by capturing
the change of the query output.
There are two modes to convert a
Table into a DataStream:- Append Mode: This mode can only be used if the dynamic
Tableis only modified byINSERTchanges. For example, it is append-only and previously emitted results are never updated. - Retract Mode: This mode can always be used. It encodes
INSERTandDELETEchanges with abooleanflag.Truemarks inserts, andfalsemarks deletes.
Both
toAppendStream and toRetractStream methods take the
conversion class or conversion type information as parameters. For the recommended Row
conversions, you need to provide the Row.class. For Tuple conversions, you
need to provide the Tuple TypeInformation object
manually.Table table = tableEnv.sqlQuery("SELECT name, age FROM People");
DataStream<Row> appendStream = tableEnv.toAppendStream(table, Row.class);
DataStream<Tuple2<Boolean, Row>> retractStream = tableEnv.toRetractStream(table, Row.class);
DataStream<Tuple2<String, Integer>> tupleStream = tableEnv.toAppendStream(
table,
new TypeHint<Tuple2<String, Integer>>() {}.getTypeInfo()
);
