【Flink】流执行引擎中的Table API与SQL应用(2.将DataStream中的数据写入Flink表中 )

将DataStream中的数据写入Flink表中

1. 在流处理引擎中创建表执行环境

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tableenv = TableEnvironment.getTableEnvironment(env);

2.1 方法一:将DataStream中的数据写入表

DataStream<String> ds = env.readTextFile("E:\\IDEAProject\\Flink_Case\\FlinkDemo\\src\\main\\java\\gongcheng21\\datasets\\words.txt");
tableenv.registerDataStream("words",ds);

words.txt数据如下

hello python
hello c
hello c++
hello c#
hello java
hello javascript
hello scala

2.2 方法二:将DataStream转换为Table,再将Table声明到Flink中

DataStream<String> ds = env.readTextFile("E:\\IDEAProject\\Flink_Case\\FlinkDemo\\src\\main\\java\\gongcheng21\\datasets\\words.txt");
Table t_ds = tableenv.fromDataStream(ds);
tableenv.registerTable("words",t_ds);

3. 查看表数据并将表数据信息打印在控制台

Table t1 = tableenv.scan("words");
DataStream<String> words_ds = tableenv.toAppendStream(t1,String.class);
words_ds.print();
env.execute();

4.1 方法一的完整代码

// 流执行引擎
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 表执行引擎
StreamTableEnvironment tableenv = TableEnvironment.getTableEnvironment(env);

/*
表注册: registerDataStream
 */
// 从txt文件中读取数据到DataStream中
DataStream<String> ds = env.readTextFile("E:\\IDEAProject\\Flink_Case\\FlinkDemo\\src\\main\\java\\gongcheng21\\datasets\\words.txt");
// 在Flink注册一张表,并将DataStream的数据写入表中
tableenv.registerDataStream("words",ds);

// 查看表数据
Table t1 = tableenv.scan("words");
// 将表数据写入DataStream中(将Table转换为DataStream)
DataStream<String> words_ds = tableenv.toAppendStream(t1,String.class);
// 将表数据打印在控制台
words_ds.print();
env.execute();

4.2 方法二的完整代码

// 流执行引擎
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 表执行引擎
StreamTableEnvironment tableenv = TableEnvironment.getTableEnvironment(env);

/*
表注册: fromDataStream + registerTable
 */
// 从txt文件中读取数据到DataStream中
DataStream<String> ds = env.readTextFile("E:\\IDEAProject\\Flink_Case\\FlinkDemo\\src\\main\\java\\gongcheng21\\datasets\\words.txt");
// 将DataStream转换成Table
Table t_ds = tableenv.fromDataStream(ds);
// 将Table声明到Flink中
tableenv.registerTable("words",t_ds);

// 查看表数据
Table t1 = tableenv.scan("words");
// 将表数据写入DataStream中(将Table转换为DataStream)
DataStream<String> words_ds = tableenv.toAppendStream(t1,String.class);
// 将表数据打印在控制台
words_ds.print();
env.execute();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhouwhui

这是一个你请我恰饭的机会呀!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值