前言
Flink 为处理一列转多列的场景提供了两种返回类型 Tuple 和 Row
- Tuple 只支持1~25个字段,且不能为null,不支持拓展
- Row 支持null同时也无限制字段数,但如果需要使用Row,必须重载实现
getResultType
方法
DataStream=>Table
1 | import org.apache.flink.api.common.typeinfo.BasicTypeInfo; |
其中
1 | tableEnv.registerDataStream("table01", ds); |
或者
1 | Table table01 = tableEnv.fromDataStream(ds); |
Table=>DataStream
1 | import org.apache.flink.api.common.functions.MapFunction; |
注意
1 不能使用批处理模式
1 | // 错误示例 |
2 注意StreamExecutionEnvironment
和StreamTableEnvironment
1 | StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); |
3 转换的方法很简单
1 | DataStream<Row> rowDataStream = tableEnv.toAppendStream(table, Row.class); |
Table和Row的转换
获取所有的列
1 | Table tb01 = tableEnv.from("t_user"); |