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
Table
is only modified byINSERT
changes. For example, it is append-only and previously emitted results are never updated. - Retract Mode: This mode can always be used. It encodes
INSERT
andDELETE
changes with aboolean
flag.True
marks inserts, andfalse
marks 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()
);