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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值