Flink从入门到实战九[Table API&SQL]-5-DataStream和DataSet与Table相互转换

将 DataStream 或 DataSet 转换成表
//前面章节已经完整演示了代码
Table table1 = tableEnv.fromDataStream(stream);

将 DataStream 或 DataSet 转换临时视图
//前面章节已经完整演示了代码
tableEnv.createTemporaryView(“myTable”, stream);

将Table转换为 DataStream 或 DataSet
有2种模式 append mode、retract mode
append mode:仅当动态table仅当insert更改进行修改时
retract mode:任何情形都可以使用此模式,使用booleam值对insert 和 delete 操作进行标记

//  append:
	DataStream<Row> dsRow = tableEnv.toAppendStream(table, Row.class);

//  append  Tuple:
	TupleTypeInfo<Tuple2<String, Integer>> tupleType = new TupleTypeInfo<>( Types.STRING(), Types.INT()); 
	DataStream<Tuple2<String, Integer>> dsTuple = tableEnv.toAppendStream(table, tupleType);

//  retract:
	DataStream<Tuple2<Boolean, Row>> retractStream = tableEnv.toRetractStream(table, Row.class);

总结
1,将dataStream 和 dataset 转换为 表,
fromDatastream(stream), 对于schema会用默认的 f0, f1…的方式默认定义datastream的字段,字段类型按照stream的定义
2,将dataStream 和 dataset 转换为 视图 tableenv.createTemporaryView(“”, stream)
3, 将表转换为datastream 和 dataset , 有2种模式 append mode 、 retract mode
append mode:仅当动态table仅当insert更改进行修改时
retract mode:任何情形都可以使用此模式,使用booleam值对insert 和 delete 操作进行标记
4,将表转换为datastream -》 datastream dsrow = tableEnv.toAppendStream(table, row.class)
datastream> dsrow = tableEnv.toRetractStream(table, row.class) —true insert , false delete
5, 数据类型和table schema的映射 — 2种方式 基于位置的映射,基于字段名称映射
6,基于位置进行映射—基于位置 $(“myLong”), $(“myInt”)
7,基于名称的映射— 默认的字段 f0, f1…