flink sql
【案例1】Flink01_Table_BaseUse
public class Flink01_Table_BaseUse {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
DataStreamSource<WaterSensor> stream = env.fromElements(
new WaterSensor("sensor_1", 1000L, 1),
new WaterSensor("sensor_2", 2000L, 2),
new WaterSensor("sensor_1", 3000L, 3),
new WaterSensor("sensor_1", 4000L, 4),
new WaterSensor("sensor_2", 5000L, 5),
new WaterSensor("sensor_1", 6000L, 6)
);
//1.创建表的执行环境
StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);
//2.通过表的执行环境,将流转成表(动态表)
Table table = tEnv.fromDataStream(stream);
//table.printSchema(); //查看动态表的 元数据
//3.在动态表上执行连续查询
// select id,ts,vc from t where id='sensor_1'
Table result = table.where("id='sensor_1'").select("id,ts,vc");
//4.把动态表转成流
DataStream<WaterSensor> resultStream = tEnv.toAppendStream(result, WaterSensor.class);
resultStream.print();
env.execute();
}
}
运行结果:
WaterSensor(id=sensor_1, ts=1000, vc=1)
WaterSensor(id=sensor_1, ts=3000, vc=3)
WaterSensor(id=sensor_1, ts=4000, vc=4)
WaterSensor(id=sensor_1, ts=6000, vc=6)
【案例1.2】Flink01_Table_BaseUse2
public class Flink01_Table_BaseUse {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
DataStreamSource<WaterSensor> stream = env.fromElements(
new WaterSensor("sensor_1", 1000L, 1),
new WaterSensor("sensor_2", 2000L, 2),
new WaterSensor("sensor_1", 3000L, 3),
new WaterSensor("sensor_1", 4000L, 4),
new WaterSensor("sensor_2", 5000L, 5),
new WaterSensor("sensor_1", 6000L, 6)
);
//1.创建表的执行环境
StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);
//2.通过表的执行环境,将流转成表(动态表)
Table table = tEnv.fromDataStream(stream);
//table.printSchema(); //查看动态表的 元数据
//3.在动态表上执行连续查询
// select id,ts,vc from t where id='sensor_1'
Table result = table.where("id='sensor_1'").select("id,vc");
//4.把动态表转成流
DataStream<Row> resultStream = tEnv.toAppendStream(result, Row.class);
resultStream.print();
env.execute();
}
}
运行结果:
+I[sensor_1, 1]
+I[sensor_1, 3]
+I[sensor_1, 4]
+I[sensor_1, 6]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2022-05-13 电商数据仓库系统