Flink - Table API 之流与表转换

Flink - Table API 数据转换

1.DataStream或DataSet 转换为Table

目前有两种方式将DataStream或DataSet 转换为Table
一种是通过注册Table的方式,将DataSet或DataStream数据集注册成CataLog中的表,然后可以直接使用Flink SQL操作注册好的Table,这种方式需要指定表名和包含的字段名称,Flink会自动推断出Table中的字段类型
一种是转换的方式,将DataSet或DataStream数据集转换成Table结构,然后可以使用Table API操作创建好的Table.

2.将Table转换成DataStream

表可以转换为DataStream或DataSet,这样自定义流处理或批处理程序就可以继续在Table API或SQL 查询的结果上运行了

将表转换为DataStream或DataSet时,需要制定生成的数据类型,既要将表的每一行转换成的数据类型

表作为流式查询的结果,是动态更新的

转换有两种转换模式:追加(Append)模式和撤回(Retract)模式

1.追加模式(Retract Mode)

        DataStream<Row> rowDataStream = tableEnv.toAppendStream(timeTable, Row.class);

2.撤回模式(Retract Mode)

用于任何场景,有些类似于更新模式中Retract模式,它只有Insert和Delete两类操作
得到的数据会增加一个Boolean类型的标识位(返回的第一个字段),用它来表示到底是新增的数量(Insert),还是被删除的数据(Delete)

DataStream<Tuple2<Boolean, Row>> tuple2DataStream = tableEnv.toRetractStream(timeTable, Row.class);

你可能感兴趣的:(flink,flink,table,api,表和流转换)